一尘不染

addEventListener甚至不需要我就调用该函数

javascript

因此,我们有一个页面:

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

并想添加一些点击事件:

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

奇迹般有效!但是,当您将第二个参数设为外部函数时:

function message_me(m_text){
    alert(m_text)
}

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

它立即调用该函数。我该如何阻止!


阅读 355

收藏
2020-04-25

共1个答案

一尘不染

由于第二个参数需要函数 引用 ,因此您需要提供一个。使用有问题的代码,您将立即调用该函数并传递其 结果(这是undefined因为,因为该函数所做的全部是alert且不返回任何内容)。在匿名函数中调用该函数(如您的第一个示例),或者更改该函数以返回一个函数。

function message_me(m_text){
    alert(m_text)
}

second.addEventListener('click', 
    function() {
        message_me('shazam');
    }
);
2020-04-25