2016-02-10 230 views
0

我試圖獲取具有相同類名的多個元素。我沒有得到任何工作結果。我在這裏錯過了什麼?Document.querySelectorAll()不起作用

HTML

<div class="menu__back"></div> 
<div class="menu__back"></div> 
<div class="menu__back"></div> 

JS

var backCtrl = document.querySelectorAll('.menu__back'); 

backCtrl.addEventListener('click', function() { 
    self._back(); 
}); 

}; 
+1

你的JS在哪裏與HTML有關,你怎麼知道你沒有得到結果?你不能直接在'querySelectorAll'的返回值上調用'addEventListener',它是一個節點集合。 –

+1

您將需要某種循環來遍歷該類中的所有元素。哦,'querySelectorAll'工作得很好。 – j08691

+0

爲什麼不'getElementsByClassName'? – scniro

回答

0

querySelector()返回一個對象,但querySelectorAll()返回對象的數組。所以你需要迭代附加事件:

for(i = 0; i < backCtrl.length; i++) { 
    backCtrl[i].addEventListener('click', function() { 
    self._back(); 
    }); 
} 
+0

爲什麼downvote?此代碼完美工作。 –

+0

https://jsfiddle.net/bzvjbr7v/我不知道在JS中需要重複多少次,使用'for-in'存在多個問題,好像它只是進行數字迭代指數。 –

+0

我不知道你使用的是什麼瀏覽器,但是在Chrome和Firefox中出現錯誤是因爲你正在使用'for-in'而不是正確使用'for'循環或其他一些限制迭代到數字的機制指數。錯誤的原因是你正在訪問'.length'和'.item'屬性,這顯然不會有'.addEventListener()'方法。 –

相關問題