这里有一个特别具体的问题。我有以下代码:
$(document).ready(function() {
var cartButArr = document.querySelectorAll(".toCart")
for(i=0; i<cartButArr.length; i++){
cartButArr[i].onclick = cartAdd();
}
});
后来,被叫函数:
function cartAdd() {
alert("yo!");
}
但是,无论出于何种原因,这个for循环都无法正常工作。当我启动页面时,我连续得到一系列六个警报,而不是每次点击时都会调用警报。我做错了什么?
提前致谢!
答案 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;
(函数名后没有括号)。