0

我正在使用Chrome擴展程序,並且每次嘗試向類中添加「click」事件時都會返回錯誤。Chrome擴展程序:單擊Event Listener不會啓動

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」。有任何想法嗎?

謝謝!

回答

0

由於您使用的不是

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

jQuery的訂閱點擊事件爲:

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

getElementsByClassName回報節點列表,你不能爲btnElements.addEventListener附加事件給它。然而,這應該工作:

var btnElements = document.getElementsByClassName('theBtn'); 
for (var i = btnElements.length; i--;) { 
    btnElements[i].addEventListener("click", clicked); 
} 
+0

甚至沒有想到這一點...這工作很好,謝謝! – lifwanian