我很困惑为什么要从formating((获取控制台日志。当代码似乎将动作监听器放在HTML中的按钮上时。我在这里期望的是代码等待,直到用户点击运行formating((。如果这篇文章措辞不当,我很抱歉。我是编码新手,正在努力自学。
ps。我知道通过Jquery有更简单的方法可以做到这一点,但我正试图首先教会自己艰难的方法。哈哈。
let i = 0;
while (i < data.length && i <= 8)
{
//some other code above
selectionA(i);
i++;
}
function selectionA(selected)
{
var classname = document.getElementsByClassname("classname");
classname[selected].addEventListener("click", formating(selected), false);
}
function formating(i)
{
console.log("you clicked on : + i = " class"
}
结果:
you clicked on: 0 class
you clicked on: 1 class
you clicked on: 2 class
you clicked on: 3 class
you clicked on: 4 class
you clicked on: 5 class
you clicked on: 6 class
you clicked on: 7 class
you clicked on: 8 class
没有任何类被点击。
感谢任何人的帮助或建议!
addEventListener需要分配函数变量。在您的代码中,您正在使用((立即调用函数。要修复它,可以删除它们。
classname[selected].addEventListener("click", formating, false);
要将参数传递给函数,您可以将其封装在匿名函数中并调用它,也可以使用bind(source(:
classname[selected].addEventListener('click', formating.bind(null, event, arg1, ... ));
addEventListener
方法的第二个参数应为函数引用。
代替
formating(selected)
您可以使用匿名函数引用,例如:
() => formating(selected)