标题重写:在没有我明确请求的情况下,该函数被 addEventListe ner 调用
P粉477369269
P粉477369269 2023-10-18 23:57:48
0
2
575

所以我们有一个页面:

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

并想添加一些点击事件:

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

就像魅力一样!但是,当您将第二个参数设置为外部函数时:

function message_me(m_text){
    alert(m_text)
}

second.addEventLis tener('click', message_me('shazam'))

它立即调用该函数。我怎样才能阻止这个?太烦人了!

这是一个现场演示:http://jsfiddle.net/ey7pB/1/

P粉477369269
P粉477369269

全部回复(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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板