用addEventListener替换onclick

时间:2012-07-05 13:19:52

标签: javascript

在for循环中,我发现了这个遗留代码,我想使用addEventListener("click"...)而不是当前的onclick。我该如何转换这段代码?我无法理解如何将该函数作为addEventListener方法的第二个参数传递。

el.onclick = (function() {
                  var value="num"+i;
                  //
                  return function() {test(value);}
})();

3 个答案:

答案 0 :(得分:0)

你把所有内容放在=的右侧(显然,除了;除外)在第二个参数的位置。

答案 1 :(得分:0)

el.addEventListener("click", function(i) {
    var value="num"+i;          
    return function() {
        test(value);
    };
}(i), false);

答案 2 :(得分:0)

el.addEventListener( 'click', function() {
    var value = "num" + i;
    test( value );
}, false );

// If you want named functions
el.addEventListener( 'click', someName, false );
function someName() {
    var value = "num" + i;
    test( value );
}

遗留代码将value置于执行test(value)的位置的闭包中,但那里的代码也是如此。

此外,您的遗留代码将onclick处理程序包装在自执行函数中,因此实际事件处理程序将返回。这就是为什么我刚写的代码是一样的。