2017-02-15 92 views
1
var elems = document.getElementsByClassName('delButton'); 
    for(i=0; i<elems.length; i++){ 
     var attr = elems[i].getAttribute('data-rowid'); 
     elems[i].addEventListener('click',function(){ 
      console.log(attr); 
     }); 
    } 

當我單擊任何按鈕時,控制檯上僅輸出最後一個元素(delButton)的值data-rowid屬性。如何打印與每個按鈕關聯的data-rowid值?無法遍歷使用同一類的元素列表

+3

鏈接的問題的答案,解釋爲什麼你得到你得到什麼ATTR。但在這種情況下,解決方案非常簡單:擺脫當前的'getAttribute'行,而是在事件處理程序中使用'console.log(this.getAttribute(「data-rowid」)); * *。 –

+0

另外請注意,你的代碼正在墮入[隱性全局的恐怖](http://blog.niftysnippets.org/2008/03/horror-of-implicit-globals.html)*(這是我的貧血症小博客)*。你需要聲明'我'。 –

回答

4

試試這個

var elems = document.getElementsByClassName('delButton'); 
    for(i=0; i<elems.length; i++){ 
     elems[i].addEventListener('click',function(){ 
      console.log(this.getAttribute('data-rowid')); 
     }); 
    } 

你沒有得到預期的結果由於封閉的範圍是這樣的,只有最後attr爲評估。

雖然在提出的解決方案,你提取從元件接收事件

+0

謝謝。我會進一步研究JS關閉。 – Eisenheim

+0

明顯的重複項不需要答案,只需進行近距離投票(如果可以的話)和適當的評論。 –