我們可以使用forEach在JavaScript中輕鬆的循環數組,但是不幸的是querySelectorAll使用上沒有這麼簡單…
1 | document.querySelectorAll('.module').forEach(function() { |
querySelectAll回傳的不是數組,是一個(non-live)的 NodeList,並不是所有Browsers都支援
目前解決的方式
1 | var divs = document.querySelectorAll('div'); |
自己在寫內部系統時(只能用IE環境開啟Orz),是用以上的方式解決目前的問題,但是這會有hack的問題,但目前也不太想改了,維護別人Code加上IE毛特多和版本不確定等等問題 (網管會設定線上的IE版本糙),筋疲力竭的狀況下選擇不浪費時間,能動就好 (了不起負責)
參考
可以用最傳統的方式解決
1 | var divs = document.querySelectorAll('div'), i; |
建議的是自訂方法
1 | // forEach method, could be shipped as part of an Object Literal/Module |
Firefox可以用的loop方式
1 | /* Be warned, this only works in Firefox */ |
這是最不推薦且危險的方式
1 | NodeList.prototype.forEach = Array.prototype.forEach; |