2012-05-08 55 views

回答

2

document.querySelectorAll不返回數組,但它沒有法「的forEach」一個NodeList對象

的錯誤味精顯示這一點:!。

Object #<NodeList> has no method 'forEach' 

檢查this article,這也解釋了這個

+0

是的,我看到了。這是什麼意思?什麼是替代方案? –

+0

檢查我添加的鏈接。 – xdazz

11

轉換節點列表到一個數組:

nodes = Array.prototype.slice.call(nodes); 

然後你可以使用.forEach()就可以了。

+0

在主機對象不能用作本地方法的* this *的瀏覽器中不起作用。這是毫無意義的,因爲這些瀏覽器可能不支持qSA ... – RobG

+0

你確定這是任何瀏覽器的問題嗎? jQuery正是這樣做的。 – ThiefMaster

+0

**任何**用戶代理您不能將主機對象當作本機對象(並且實際上沒有理由認爲您可以放在第一位),IE 8及更低版本就是一個例子。 jQuery不會在主機對象上使用該方法,只能在本地陣列上使用該方法。請注意,大多數IE用戶仍然使用IE 8或更低版本。 – RobG

0

使用一些現代JavaScript的只是轉換它:

let paragraphs = Array.from(nodes) 
paragraphs.forEach(paragraph => console.log(`This is the paragraph: ${paragraph}`); 
相關問題