这里有相当具体的问题。我有以下代码:

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

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


然后,被调用的函数:

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


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

提前致谢!

最佳答案

一个非常小的拼写错误会阻止循环工作。更改

cartButArr[i].onclick = cartAdd();



cartButArr[i].onclick = cartAdd;

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

10-04 16:43