Maison > Questions et réponses > le corps du texte
Nous avons donc une page :
<span id='container'> <a href='#' id='first'>First Link</a> <a href='#' id='second'>Second Link</a> </span>
Et je souhaite ajouter des événements de clic :
first.addEventLis tener('click', function(){alert('sup!');})
Fonctionne à merveille ! Mais lorsque vous définissez le deuxième argument sur une fonction externe :
function message_me(m_text){ alert(m_text) } second.addEventLis tener('click', message_me('shazam'))
Il appelle la fonction immédiatement. Comment puis-je arrêter cela ? Si ennuyant!
Ceci est une démo en direct : http://jsfiddle.net/ey7pB/1/
P粉2580834322023-10-19 17:48:17
Étant donné que le deuxième argument nécessite une fonction référence , vous devez en fournir une. Avec le code en question, vous appelleriez immédiatement la fonction et lui transmettriez son résultat (qui est 未定义
... car tout ce que la fonction fait est alerte
et ne renvoie rien). Appelez la fonction dans une fonction anonyme (comme votre premier exemple) ou modifiez la fonction pour renvoyer une fonction.
Vous pouvez faire ceci :
function message_me(m_text){ alert(m_text); } second.addEventListener('click', function () { message_me('shazam') });
Ou ceci :
function message_me(m_text){ return function () { alert(m_text); }; } second.addEventListener('click', message_me('shazam'));
Démo : http://jsfiddle.net/tcCvw/ p>
P粉7736596872023-10-19 12:06:48
Citant la réponse de Ian :
function message_me(m_text){ alert(m_text) } second.addEventListener('click', function() { message_me('shazam'); } );
Ceci est un violon mis à jour.