将监听器添加到按钮以执行功能

时间:2014-10-28 22:44:19

标签: javascript

我有一堆不同的按钮(不同的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的侦听器函数。

1 个答案:

答案 0 :(得分:2)

它是addEventListener,而不是addEventListeners(请注意s)。

每当您foo(bar())时,首先调用bar,并将其返回值传递给foo。因此,在您的情况下,您首先调用clearOrSelectAll并将返回值传递给addEventListener

但是,addEventListener期望函数作为参数,如果clearOrSelectAll没有返回函数,则不起作用。

待办事项

button.addEventListener("click", clearOrSelectAll);

并通过this访问处理程序绑定的元素。