0

我正在开发 Chrome 扩展程序,每当我尝试向类添加“点击”事件时都会返回一个错误。

Error in event handler for 'undefined': Object #<NodeList> has no method 'addEventListener' TypeError: Object #<NodeList> has no method 'addEventListener'

这是我的函数代码(popup.js)

listElements: function(elements) {
    iHTML = '';
    for (var i = 0; i < elements.length; i++) {
        ...
        ...
        iHTML += '<div class="theBtn">btn</div>';
        ...
        ...
    }

    $('popup_content').innerHTML = iHTML;

    var btnElements = document.getElementsByClassName('theBtn');
    if (btnElements.length > 0) {
        btnElements.addEventListener("click", clicked);
    }
}

我也尝试了 each() ,但也没有用。相同的错误信息。它也完美地记录了“btnElements”。有任何想法吗?

谢谢!

4

1 回答 1

0

由于您使用的是 jQuery 而不是

var btnElements = document.getElementsByClassName('theBtn');
if (btnElements.length > 0) {
    btnElements.addEventListener("click", clicked);
}

订阅点击事件为:

$('.theBtn').click(clicked);

getElementsByClassName返回 NodeList,并且您不能将事件作为btnElements.addEventListener. 但是,这应该有效:

var btnElements = document.getElementsByClassName('theBtn');
for (var i = btnElements.length; i--;) {
    btnElements[i].addEventListener("click", clicked);
}
于 2013-03-30T10:23:43.730 回答