Uncaught TypeError: impossible de définir la propriété "onclick" de null [duplicate]

cette question a déjà une réponse ici:

j'ai des problèmes à faire apparaître mon alerte fenêtre avec une simple case à cocher et je ne peux pas pour la vie de moi comprendre pourquoi. Voici l' basic Javascript and 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 lance: Uncaught TypeError: Cannot set property 'onclick' of null en vertu de l'

blue_box.onclick=colorFunction;

y a-t-il des raisons visibles pour cette erreur dans mon code?

22
demandé sur A Child of God 2012-03-20 02:28:32

6 réponses

Wrap code dans

window.onload = function(){ 
    // your code 
};
68
répondu maximkou 2013-05-24 11:54:56

essayez de mettre toutes vos étiquettes <script ...></script> avant l'étiquette </body> . Peut-être que le js essaie d'accéder à un objet du DOM avant qu'il ne soit construit.

10
répondu Tifa 2013-05-24 11:47:25

donc j'avais un problème similaire et j'ai réussi à le résoudre en mettant la balise script avec mon fichier JS après la balise de fermeture du corps.

je suppose que c'est parce qu'il s'assure qu'il y a quelque chose à mentionner, mais je ne suis pas entièrement sûr.

4
répondu PaintHat 2016-04-05 20:17:45

assurez-vous que votre javascript est exécuté après que votre(s) élément (s) a (ont) été chargé (s), Essayez peut-être de placer l'appel de fichier js juste avant la balise ou utilisez l'attribut defer dans votre script, comme ceci: <script src="app.js" defer></script> cela garantit que votre script sera exécuté après que le dom a été chargé.

3
répondu Beto 2013-08-19 01:05:51

"blue_box" est null -- est-ce que ce qui est positif avec "id='blue'" existe quand cela est exécuté?

essayer console.log(document.getElementById("blue")) dans chrome ou FF avec firebug. Votre script peut être en cours d'exécution avant que l'élément 'blue' ne soit chargé. Dans ce cas, vous devrez ajouter l'événement après le chargement de la page ( window.onload ).

2
répondu Collin Green 2016-03-23 10:49:59

N'document.getElementById ("bleu") existe? si ce n'est pas le cas, blue_box sera égal à null. vous ne pouvez pas configurer un clic sur quelque chose qui est null

0
répondu ncremins 2012-03-19 22:31:45