Pourquoi refButton
obtient null
dans le code JavaScript suivant?
<html>
<head>
<title></title>
<script type="text/javascript">
var refButton = document.getElementById("btnButton");
refButton.onclick = function() {
alert('I am clicked!');
};
</script>
</head>
<body>
<form id="form1">
<div>
<input id="btnButton" type="button" value="Click me"/>
</div>
</form>
</body>
</html>
Au moment où vous appelez votre fonction, le reste de la page n'est pas restitué et donc l'élément n'existe pas à ce stade. Essayez d'appeler votre fonction sur window.onload
peut être. Quelque chose comme ça:
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = function(){
var refButton = document.getElementById("btnButton");
refButton.onclick = function() {
alert('I am clicked!');
}
};
</script>
</head>
<body>
<form id="form1">
<div>
<input id="btnButton" type="button" value="Click me"/>
</div>
</form>
</body>
</html>
Vous devez mettre le JavaScript à la fin de la balise body.
Il ne le trouve pas car il n'est pas encore dans le DOM!
Vous pouvez également l'encapsuler dans le gestionnaire d'événements onload comme ceci:
window.onload = function() {
var refButton = document.getElementById( 'btnButton' );
refButton.onclick = function() {
alert( 'I am clicked!' );
}
}
Parce que lorsque le script s'exécute, le navigateur n'a pas encore analysé le <body>
, il ne sait donc pas qu'il existe un élément avec l'ID spécifié.
Essayez plutôt ceci:
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = (function () {
var refButton = document.getElementById("btnButton");
refButton.onclick = function() {
alert('Dhoor shala!');
};
});
</script>
</head>
<body>
<form id="form1">
<div>
<input id="btnButton" type="button" value="Click me"/>
</div>
</form>
</body>
</html>
Notez que vous pouvez également utiliser addEventListener
au lieu de window.onload = ...
pour que cette fonction ne s'exécute qu'après l'analyse complète du document.