Chrome扩展程序:点击事件监听器不会启动

时间:2013-03-30 10:05:19

标签: javascript jquery google-chrome javascript-events google-chrome-extension

我正在使用Chrome扩展程序,每当我尝试向某个类添加“click”事件时,都会返回错误。

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);
    }
}

我也尝试了每个(),但也没有用。相同的错误消息。它也很好地记录了“btnElements”。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分: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);
}