2015-07-21 89 views
2

嗨我試圖訪問所選元素的子節點,但瀏覽器告訴我,該對象沒有foreach函數。我應該如何爲我訪問子元素。我不想使用jquery,而是想使用本機,以用於實驗目的。Javascript對象forEach不是函數

這裏是我的代碼:

var el = document.querySelector('ol'); 
 
el.children.forEach(function(childEl) { 
 
    console.log(childEl); 
 
})
<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Document</title> 
 
</head> 
 

 
<body> 
 
    <ol contenteditable oninput=""> 
 
    <li>press enter</li> 
 
    </ol> 
 
</body> 
 

 
</html>

+2

'foreach'是無效的功能,使用'forEach' *資本E *,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ forEach – Tushar

+0

@Tushar nope它不起作用 – loki9

回答

5

Node.childrendom collection,而不是一個真正的數組,因此不會有像forEach陣列的方法(還需要修正的情況下)。

所以一個常用的解決方法是調用與上下文作爲HTML收集

var el = document.querySelector('ol'); 
 
[].forEach.call(el.children, function(childEl) { 
 
    console.log(childEl); 
 
})
<ol contenteditable oninput=""> 
 
    <li>press enter</li> 
 
    </ol>


的另一種方式的陣列方法(類似)被添加到集合轉換爲先陣列(使用Array.slice())然後調用它的數組方法

var el = document.querySelector('ol'), 
 
    array = [].slice.call(el.children); 
 
array.forEach(function(childEl) { 
 
    console.log(childEl); 
 
})
<ol contenteditable oninput=""> 
 
    <li>press enter</li> 
 
</ol>