J'ai des problèmes pour faire apparaître ma fenêtre d'alerte avec une simple case à cocher et je ne peux pas comprendre pourquoi. Voici les bases de Javascript et HTML:
var blue_box=document.getElementById("color-blue");
function colorFunction() {
window.alert("This color is blue!");
}
blue_box.onclick=colorFunction;
<form action="" method="POST" id="form">
<fieldset>
<legend> Form!</legend>
<ul>
<li><label><input type="checkbox"
name="color"
value="blue"
id="color-blue" />
blue</label>
</li>
<li><label><input type="checkbox"
name="color"
value="red"
id="color-red" />
red</label>
</li>
<li><label><input type="checkbox"
name="color"
value="yellow"
id="color-yellow" />
yellow </label>
</li>
</ul>
</fieldset>
</form>
Qui jette: Uncaught TypeError: Cannot set property 'onclick' of null
Sous
blue_box.onclick=colorFunction;
Existe-t-il des raisons visibles de cette erreur dans mon code?
Envelopper le code dans
window.onload = function(){
// your code
};
Essayez de mettre toutes vos balises <script ...></script>
avant la balise </body>
. Peut-être que le js tente d'accéder à un objet du DOM avant qu'il ne soit construit.
J'avais donc un problème similaire et j'ai réussi à le résoudre en plaçant la balise de script avec mon fichier JS après la balise body de fermeture.
Je suppose que c'est parce que cela garantit qu'il y a quelque chose à référencer, mais je ne suis pas tout à fait sûr.
Assurez-vous que votre javascript est en cours d'exécution après le chargement de votre ou vos éléments. Essayez peut-être de placer l'appel du fichier js juste avant la balise ou utilisez l'attribut defer dans votre script, comme suit: <script src="app.js" defer></script>
sera exécuté après le chargement du dom.
"blue_box"
est null - êtes-vous certain que quoi que ce soit avec "id='blue'"
existe lorsque cela est en cours d'exécution?
essayez console.log(document.getElementById("blue"))
en chrome ou FF avec Firebug. Votre script est peut-être en cours d'exécution avant le chargement de l'élément 'blue'
. Dans ce cas, vous devrez ajouter l'événement une fois la page chargée (window.onload
).
Document.getElementById ("blue") existe-t-il? sinon, blue_box sera égal à null. vous ne pouvez pas définir un onclick sur quelque chose qui est null