jQuery:为什么循环不起作用?

时间:2014-10-26 03:47:05

标签: javascript jquery function for-loop

这里有一个特别具体的问题。我有以下代码:

$(document).ready(function() {
    var cartButArr = document.querySelectorAll(".toCart")

    for(i=0; i<cartButArr.length; i++){
        cartButArr[i].onclick = cartAdd();
    }
});

后来,被叫函数:

function cartAdd() {
    alert("yo!");
}

但是,无论出于何种原因,这个for循环都无法正常工作。当我启动页面时,我连续得到一系列六个警报,而不是每次点击时都会调用警报。我做错了什么?

提前致谢!

3 个答案:

答案 0 :(得分:2)

onclick事件应附加到该事件触发时要调用的函数

您正在做的事实上是调用函数cartAdd并将其赋值给onclick,它不会将其作为函数识别出来

替换你的行

cartButArr[i].onclick = cartAdd();

这一个

cartButArr[i].onclick = cartAdd;

答案 1 :(得分:0)

一个非常小的错字是阻止循环工作。变化

cartButArr[i].onclick = cartAdd();

cartButArr[i].onclick = cartAdd;

它不起作用的原因是cartAdd()调用cartAdd()函数,触发警报。您多次看到警报,因为每次循环都调用了cartAdd()。想要做的是将函数分配给回调处理程序,而不是调用函数。

答案 2 :(得分:0)

你有

cartButArr[i].onclick = cartAdd();

因此,分配回调功能,而不是执行

正确的语法是:

cartButArr[i].onclick = cartAdd;

(函数名后没有括号)。

相关问题