0
我正試圖添加事件監聽器到適當的html元素。事件監聽器只被分配給第一個類,被稱爲
var eventArray = [['scribbler', 'click', addNote], ['checkbox', 'change', strikethrough]];
for(var i=0;i<=eventArray.length; i++){
addEvents(eventArray[i][0], eventArray[i][1], eventArray[i][2]);
}
上述函數循環遍歷所提供的數組併爲addEvents
函數提供適當的參數。
function addEvents(className, event, fn){
var g = document.getElementsByClassName(className);
for(var i=0; i<=g.length; i++){
g[i].addEventListener(event, fn, false);
}
}
這是addEvents
函數被調用的for
循環。它適用於第一次運行,但之後的任何事情似乎都被忽略。即scribbler/click事件偵聽器已正確應用,但複選框/更改一個不是。如果我顛倒數組的順序,那麼正確應用的偵聽器也會翻轉。
我試圖在addEvents
函數的末尾努力重置g
變量,但這似乎不起作用。
document.getElementsByClassName(className).each.addEventListener(event, fn, false);
這似乎不是一個合適的解決方案。
因此,我通過一次迭代超調我的NodeList,導致第二次調用不發生?編輯:你的編輯回答了這個問題,謝謝。 – RM3
或多或少,你應該看看你的瀏覽器的控制檯來獲取更多信息 – pwolaq