la méthode addEventListener() ne fonctionne pas
Ok, donc j'ai essayé de faire cette page avec une méthode addEventListener fonction, à l'adresse en cliquant sur un bouton; Cela n'a pas fonctionné. J'ai rétréci vers le bas par la suppression de tout, mais les éléments de base nécessaires pour l'auditeur, et suis parti avec le suivant:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function init(){
document.getElementById("test").addEventListener("mousedown", function(){
alert("Test successful");
});
}
body.onload = init();
</script>
</head>
<body>
<button id="test">Click</button>
</body>
</html>
qui ne fonctionne pas non plus, donc je sais que le problème est dans ma syntaxe ci-dessus. Rappelez-vous, quand j'ai enlevé body.onload = init();
et au lieu de mettre onload="init()"
dans la balise body, il a fait un travail :O Problème est, je ne veux pas le faire en ligne. Toutes les suggestions?
Remarque: Ne garder à l'esprit que cette question est pas sur la façon il y a un bug dans le JS, même si le titre pourrait le suggérer, c'est de savoir comment je peut pas le faire fonctionner depuis que j'ai probablement la syntaxe de mal. N'hésitez pas à le renommer si vous le souhaitez.
OriginalL'auteur Bluefire | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez accéder à l'élément de corps par le biais de
document.body
. Cependant,onload
est défini surwindow
, si vous avez réellement besoin:Cependant, que l'exécution de l'
init()
méthode et de stocker la valeur de retour danswindow.onload
. Évidemment, ce n'est pas ce que vous voulez: vous souhaitezinit
fonction d'agir commeonload
gestionnaire. Par conséquent, vous devriez avoir écrit:Bien que je vous recommande d'utiliser
addEventListener
pour que ainsi:OriginalL'auteur Mattias Buelens
corps.onload = init();
Pas la manière de se référer à corps, utilisez la fenêtre au lieu-
et n'appelez pas la méthode de référence (sans les parenthèses)
fenêtre.onload=init;
Passer le troisième argument, même si c'est faux-
Et note que IE avant la version #9 ne prend pas en charge la méthode addEventListener.
OriginalL'auteur kennebec
Cela se produit parce que
body
n'est pas défini, le bon document.corps.Aussi, peut-être le document.le corps n'est pas encore défini car le
head
balise est rendu avant lebody
marque, de sorte que le mieux est de vérifier si l'window
ou ladocument
est chargé.Essayez ce code:
OriginalL'auteur Danilo Valente