Titelumschreibung: Die Funktion wird von addEventListener ohne meine explizite Anfrage aufgerufen
P粉477369269
P粉477369269 2023-10-18 23:57:48
0
2
491

Also haben wir eine Seite:

 First Link Second Link 

Und ich möchte einige Klickereignisse hinzufügen:

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

Funktioniert wie ein Zauber! Aber wenn Sie das zweite Argument auf eine externe Funktion setzen:

function message_me(m_text){ alert(m_text) } second.addEventLis tener('click', message_me('shazam'))

Es ruft die Funktion sofort auf. Wie kann ich das stoppen? So nervig!

Dies ist eine Live-Demo: http://jsfiddle.net/ey7pB/1/

P粉477369269
P粉477369269

Antworte allen (2)
P粉258083432

由于第二个参数需要一个函数引用,因此您需要提供一个。对于有问题的代码,您将立即调用该函数并传递其结果(这是未定义...因为该函数所做的只是警报并且不返回任何内容)。要么在匿名函数中调用该函数(如您的第一个示例),要么更改该函数以返回一个函数。

你可以这样做:

function message_me(m_text){ alert(m_text); } second.addEventListener('click', function () { message_me('shazam') });

或者这个:

function message_me(m_text){ return function () { alert(m_text); }; } second.addEventListener('click', message_me('shazam'));

演示:http://jsfiddle.net/tcCvw/p>

    P粉773659687

    引用伊恩的答案

    function message_me(m_text){ alert(m_text) } second.addEventListener('click', function() { message_me('shazam'); } );

    这是更新的fiddle

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!