Je sais que cela est demandé à quelques reprises sur S.O.
mais aucune des réponses ne semble correspondre à ma situation. Donc, j'ai une page HTML de base qui essaie d'utiliser un JS externe. Le fichier JS tente de modifier le contenu d'un paragraphe défini dans le code HTML lors d'un clic de bouton, mais ne semble pas fonctionner.
Je vois les erreurs suivantes dans la console:
1) SyntaxError: expression attendue, notée '<'
2) ReferenceError: le changement n'est pas défini
JSFiddle indiquant la source exacte? (Sauf que les balises & sont supprimées sous jsfiddle - http://jsfiddle.net/p9ko4yde/
Code HTML :
<h1> Numbers with external script:) </h1>
<p id="number">1</p>
<button type="button" onclick="change()">Toggle between 1 and 2</button>
<script src="myScript.js"></script>
</body>
</html>
Code JS:
<script type="text/javascript">
function change(){
var number = document.getElementById('number').innerHTML;
if(number == '1'){
document.getElementById('number').innerHTML='2';
}
else{
document.getElementById('number').innerHTML='1';
}
}
</script>
Vous n'avez pas besoin des balises <script>
dans un fichier .js externe. Utilisez ces balises pour incorporer un script dans HTML uniquement.
L'erreur de syntaxe est due au fait que vous avez des balises <script>
dans votre fichier JS. Lorsque vous mettez JavaScript dans son propre fichier, vous n'avez pas besoin de l'entourer de balises de script. c'est du HTML, et c'est un fichier JavaScript.
L'erreur de référence se produit car, à cause de l'erreur de syntaxe, le fichier JS ne s'exécute pas correctement et la fonction de modification n'a donc jamais été créée. La résolution de l'erreur de syntaxe devrait également résoudre le problème.
Dans un fichier js, vous n'utilisez pas le code HTML pour déclarer qu'il s'agit d'un fichier js. Vous pouvez donc supprimer la balise script dans myScript et la modifier comme suit:
function change(){
var number = document.getElementById('number').innerHTML;
if(number == '1'){
document.getElementById('number').innerHTML='2';
}
else{
document.getElementById('number').innerHTML='1';
}
}
Parfois, cette erreur se produit lorsque le fichier Javascript référencé n'existe pas . Assurez-vous que le nom du fichier est correct et que le fichier est en place. Je sais que votre problème est résolu, mais peut-être que cette réponse résoudra celle de quelqu'un d'autre :)