2017-07-07 60 views
0

我有兩個div工作第一個div:的indexOf(),如下所示的功能不是在陣列

var div1 = document.querySelectorAll(".container")[0]; 

當我使用indexOf()獲得第一個div的索引數組中,我得到一個錯誤:

containers.indexOf is not a function

這裏是一個片段總結我的問題:

var containers = document.querySelectorAll(".container"); 
 
var div1 = document.querySelectorAll(".container")[0]; 
 
containers.indexOf(div1); // returns the error
<div class="container"></div> 
 
<div class="container"></div>

+5

'querySelectorAll'返回一個節點列表* *,而不是一個數組。您可以通過調用'Array.from(...)'將NodeList轉換爲數組。 –

+0

'querySelectorAll'返回一個沒有'indexOf'方法的'NodeList'。 – Li357

+1

但是,您可以執行'Array.prototype.indexOf.call(containers,div1)'。 – RobG

回答

3

querySelectorAll返回節點列表,而不是一個數組。您可以通過調用Array.from(...)將NodeList轉換爲數組。

2

Queryselectorall返回非活動節點列表。 indexOf方法沒有在那個上定義。更多信息在這裏

https://developer.mozilla.org/en-US/docs/Web/API/NodeList

你可以使用Array.from()轉換成數組,然後使用的indexOf

+0

'非活===死'?或者是「靜態」更多的PC? ;-) – RobG

+0

這就是官方文件在MDN上所說的。 https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll –

+0

@RobG它更靜態而非死亡。 :) –