Une partie de mon code JavaScript se trouve dans un fichier externe appelé helpers.js. Dans le code HTML qui appelle ce code JavaScript, je dois savoir si une fonction particulière de helpers.js a été appelée.
J'ai tenté de créer une variable globale en définissant:
var myFunctionTag = true;
De portée globale à la fois dans mon code HTML et dans helpers.js.
Voici à quoi ressemble mon code html:
<html>
...
<script type='text/javascript' src='js/helpers.js'></script>
...
<script>
var myFunctionTag = false;
...
//I try to use myFunctionTag here but it is always false, even though it has been se t to 'true' in helpers.js
</script>
Est-ce que ce que j'essaie de faire est même faisable?
Vous devez déclarer la variable avant d'inclure le fichier helpers.js. Créez simplement une balise de script au-dessus de include pour helpers.js et définissez-la à cet endroit.
<script type='text/javascript' >
var myFunctionTag = false;
</script>
<script type='text/javascript' src='js/helpers.js'></script>
...
<script type='text/javascript' >
// rest of your code, which may depend on helpers.js
</script>
La variable peut être déclarée dans le fichier .js
et simplement référencée dans le fichier HTML. Ma version de helpers.js
:
var myFunctionWasCalled = false;
function doFoo()
{
if (!myFunctionWasCalled) {
alert("doFoo called for the very first time!");
myFunctionWasCalled = true;
}
else {
alert("doFoo called again");
}
}
Et une page pour le tester:
<html>
<head>
<title>Test Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="helpers.js"></script>
</head>
<body>
<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>
<script type="text/javascript">doFoo();</script>
<p>Some stuff in between</p>
<script type="text/javascript">doFoo();</script>
<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>
</body>
</html>
Vous verrez le test alert()
affichera deux choses différentes et la valeur écrite sur la page sera différente la deuxième fois.
OK, les gars, voici mon petit test aussi. J'ai eu un problème similaire, alors j'ai décidé de tester 3 situations:
Tous les résultats étaient comme prévu.
Au lieu de parcourir les tutoriels, il m'a été plus facile de l'essayer, alors je l'ai fait. Ma conclusion: chaque fois que vous incluez un fichier JS externe dans votre page HTML, le contenu du JS externe est "copié/collé" dans votre page HTML avant que la page ne soit rendue. Ou dans votre PHP page si vous voulez. S'il vous plaît, corrigez-moi si je me trompe ici. Merci.
Mes exemples de fichiers suivent:
JS EXTÉRIEUR:
var global = 0;
function f1()
{
alert('fired: f1');
global = 1;
alert('global changed to 1');
}
function f2()
{
alert('fired f2');
alert('value of global: '+global);
}
HTML 1:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
HTML 2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index2.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
Salut pour transmettre les valeurs d'un fichier js à un autre fichier js, nous pouvons utiliser le concept de stockage local
<body>
<script src="two.js"></script>
<script src="three.js"></script>
<button onclick="myFunction()">Click me</button>
<p id="demo"></p>
</body>
Fichier Two.js
function myFunction() {
var test =localStorage.name;
alert(test);
}
Fichier Three.js
localStorage.name = 1;
// fichier javascript 1
localStorage.setItem('Data',10);
// fichier javascript 2
var number=localStorage.getItem('Data');
N'oubliez pas de lier vos fichiers JS en HTML:)
Je pense que vous devriez utiliser "stockage local" plutôt que des variables globales.
Si vous craignez que le "stockage local" ne soit peut-être pas pris en charge par les très vieux navigateurs, envisagez d'utiliser un plug-in existant qui vérifie la disponibilité du "stockage local" et utilise d'autres méthodes s'il n'est pas disponible.
J'ai utilisé http://www.jstorage.info/ et j'en suis satisfait jusqu'à présent.
Vous pouvez créer un objet JSON comme:
globalVariable={example_attribute:"SomeValue"};
dans fileA.js
Et y accéder depuis fileB.js comme: globalVariable.example_attribute