我有一堆不同的按钮(不同的ID),点击后,执行相同的逻辑。这就是为什么我向每个人添加了监听器,所以在click
时,clearOrSelectAll
函数以适当的clearSelectArr[i]
作为输入执行。
目前我将此作为我的错误:
Uncaught TypeError: undefined is not a function
所有按钮都有class="clearSelect"
我的代码:
var clearSelectArr = [ "selectAllXP", "selectAll7", "selectAll8",
"selectAll8_1", "selectAll10_6", "selectAll10_8",
"selectAll10_9", "selectAllios", "selectAll4_4",
"selectAll4_3", "selectAll4_2", "selectAll4_1",
"selectAll4_0", "clearAllXP", "clearAll7",
"clearAll8", "clearAll8_1", "clearAll10_6",
"clearAll10_8", "clearAll10_9", "clearAllios",
"clearAll4_4", "clearAll4_3", "clearAll4_2",
"clearAll4_1", "clearAll4_0"];
var buttons = document.getElementsByClassName("clearSelect");
for (var i = 0; i < buttons.length; i++) {
var button = buttons[i];
button.addEventListeners("click", clearOrSelectAll(button.id));
}
每个按钮都有一个与之关联的ID。这些ID与clearSelectArr
中的ID相同。我希望能够添加与按钮具有相同ID的侦听器函数。
答案 0 :(得分:2)
它是addEventListener
,而不是addEventListeners
(请注意s
)。
每当您foo(bar())
时,首先调用bar
,并将其返回值传递给foo
。因此,在您的情况下,您首先调用clearOrSelectAll
并将返回值传递给addEventListener
。
但是,addEventListener
期望函数作为参数,如果clearOrSelectAll
没有返回函数,则不起作用。
待办事项
button.addEventListener("click", clearOrSelectAll);
并通过this
访问处理程序绑定的元素。