J'ai un bouton
startButton.onclick = start;
3 Réponses :
Je serais d'accord avec vous que c'est une question de levage, vous devrez examiner votre code pour le lever de manière appropriée avant de définir Voici ce que MDN a à dire à propos de La syntaxe:
Il mentionne spécifiquement que la fonction peut être déclarée ou exprimée. Qui, pour moi, conduit à nouveau à la hiérarchie, car les déclarations de fonction sont automatiquement hissées. P>
the MDN pour startbutton.onclick = début; p>. p>.
p>
OnClick code> utilise une déclaration de fonction. J'ai changé l'exemple de ce jsfiddle pour utiliser une expression de fonction, comme vous le souhaitez utiliser. Avec un hélage correct, il appelle la méthode correcte lorsque vous cliquez sur le bouton. P>
Merci Adam - ressemble beaucoup à celui déclaré est la meilleure façon d'aller sur ce
Jugement par la description de votre problème, il semble que vous déclarez (et définissez) Qu'est-ce que la hélérité est la variable elle-même - votre code sait qu'il a été déclaré, mais ne connaît pas encore sa valeur, car la mission a lieu exactement où vous l'avez dans le code. Pensez-y de cette façon: lorsque vous utilisez le mot-clé Considérez l'exemple suivant: P> Démarrer code> après em> l'affectation à
startbutton.onclick code>. Dans ce cas,
startbutton.onclick code> sera effectivement
non défini code>.
var code>, vous déclarez une variable qui, cependant, n'est pas encore définie. Si vous vous arrivez immédiatement une valeur à cela, la nouvelle valeur n'est pas visible au code ci-dessus de l'affectation. P>
startButton.onclick = function() { // I'm a function expression too!
// do something here
}
La pièce jointe de l'événement doit se produire après la création de l'expression de la fonction.
Checkout à propos de ce exemple P>
<button id="click">Click</button> <button id="click2">Click2</button> $(function(){ var startButton = $("#click").get(0); var startButton2 = $("#click2").get(0); startButton.onclick = clickFunc; // wont work var clickFunc = function() { alert('click'); }; startButton2.onclick = clickFunc; // work });
Hey Will, n'oubliez pas de marquer une réponse. :-)