Sie addEventListener () ruft die Funktion auf, ohne mich auch nur zu Fragen,

Also wir haben eine Seite:

<span id='container'>
    <a href='#' id='first'>First Link</a>
    <a href='#' id='second'>Second Link</a>
</span>

Wollen und fügen Sie einige auf Ereignisse:

first.addEventListener('click', function(){alert('sup!');})

Funktioniert wie ein Charme! Allerdings, wenn Sie das zweite argument eine externe Funktion:

function message_me(m_text){
    alert(m_text)
}

second.addEventListener('click', message_me('shazam'))

Ruft es die Funktion sofort. Wie kann ich das verhindern? So ärgerlich!

Hier ein live-demo: http://jsfiddle.net/ey7pB/1/

Da der zweite parameter erwartet eine Funktion Verweis, die Sie benötigen, zur Verfügung zu stellen. Mit den problematischen code, Sie sind sofort ruft die Funktion auf und übergibt das Ergebnis (die undefined). Entweder rufen Sie die Funktion in eine anonyme Funktion (wie dein erstes Beispiel) oder ändern Sie die Funktion auf zurück eine Funktion (wahrscheinlich nicht ideal).
Warum ist das nicht ideal? Es scheint gegen D. R. Y. an copypasta meine Funktion in der 4 oder so addEventListeners, die im Einstellung, nicht?
Eine weitere option ist, um die gewünschte Nachricht als Attribut auf das element, dann binden Sie die Funktion als second.addEventListener('click', message_me) haben und es abrufen der Nachricht aus dem Attribut statt von einem parameter.
Möglich, Duplikat der gewusst Wie: übergeben Sie parameter an die Funktion mit in addEventListener?

InformationsquelleAutor LittleBobbyTables | 2013-04-30

Schreibe einen Kommentar