2013-12-06 2 views
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 

ответ

5

Ваше выполнение функции при передаче его функции eventListener, вместо этого использовать:

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

Функции могут быть переданы в качестве аргументов точно так же, как и другие переменные, но при передаче их с () после их вызов функции, а объект/значение, возвращаемое функцией, передается в качестве аргумента.

Кроме того, если вы не добавили класс div все ваши дивы я думаю, вы хотите использовать селектор тегов:

var div = document.querySelectorAll('div'); 

JS скрипку:http://jsfiddle.net/rG3AC/1/

+0

Ahh right Я вижу, спасибо за это, просто добравшись до библиотеки, не имеющей JS, исходящей из фона PHP, мелочи продолжают меня отключать, еще раз спасибо! – Tom

+0

@Tom Glad Я мог бы помочь! –

0

Вы должны связать функцию так что он не срабатывает немедленно.

div[i].addEventListener('click', eventFunction.bind(), false); 
+0

Не указывает на резкую ошибку - не могу видеть, как это вообще помогает здесь. – JavaScript

Смежные вопросы