循环中的Javascript函数

Tom*_*Tom 0 javascript

任何人都知道为什么这不能按预期工作?只需在页面加载时触发警报.

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
Run Code Online (Sandbox Code Playgroud)

Kev*_*sox 5

在将函数传递给函数时执行eventListener函数,而不是使用:

for(var i = 0; i < div.length; i++) {  
  div[i].addEventListener('click', eventFunction, false); //notice no ()
}
Run Code Online (Sandbox Code Playgroud)

函数可以作为参数以与其他变量相同的方式传递,但是当您()在它们之后传递它们时,调用函数并将函数返回的对象/值作为参数传递.

除非你已经div为所有div 添加了一个类,否则我认为你想要使用标签选择器:

var div = document.querySelectorAll('div'); 
Run Code Online (Sandbox Code Playgroud)

JS小提琴: http ://jsfiddle.net/rG3AC/1/