任何人都知道为什么这不能按预期工作?只需在页面加载时触发警报。
var div = document.querySelectorAll('.div'); // NodeList of all instances of '.div'
var eventFunction = function() {
alert('ggdf');
};
for(var i = 0; i < div.length; i++) { // Begin '.div' NodeList loop
div[i].addEventListener('click', eventFunction(), false); // Click function on all instances of '.div'
} // End '.div' NodeList loop
答案 0 :(得分:5)
将函数传递给eventListener
函数时执行该函数,而不是使用:
for(var i = 0; i < div.length; i++) {
div[i].addEventListener('click', eventFunction, false); //notice no ()
}
函数可以作为参数以与其他变量相同的方式传递,但是当您使用()
传递它们之后,调用函数并将函数返回的对象/值作为参数传递。
除非你为所有div添加了一个类div
,否则我认为你想要使用标签选择器:
var div = document.querySelectorAll('div');
JS小提琴: http://jsfiddle.net/rG3AC/1/
答案 1 :(得分:0)
您需要绑定该函数,使其不会立即触发。
div[i].addEventListener('click', eventFunction.bind(), false);