当我调用.addEventListener时(点击,myFunction(I),false);它在调用时运行我的函数,而



我很困惑为什么要从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)

最新更新