2017-07-07 7 views
0

に取り組んでいない。のindexOf()関数は、以下に示すように、私は2つのdiv要素を有するアレイ

<div class="container"></div> 
<div class="container"></div> 

Iは、これら2つのdiv使用してアレイを作成した:私も表現する変数を作成

var containers = document.querySelectorAll(".container"); 

を最初のdiv:

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

私は配列の最初のdivのインデックスを取得するためにindexOf()を使用すると、私が手エラー:

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

のindexOfを使用することができます 'querySelectorAll'は*ののNodeList *、ではない配列を返します。 'Array.from(...)'を呼び出すことで、NodeListを配列に変換することができます。 –

+0

'querySelectorAll'は' indexOf'メソッドを持たない 'NodeList'を返します。 – Li357

+1

しかし、 'Array.prototype.indexOf.call(containers、div1)'を実行することができます。 – RobG

答えて

3

querySelectorAllのNodeList、ない配列を返します。 Array.from(...)を呼び出すことによって、NodeListを配列に変換できます。

2

Queryselectorallは、非ライブノードリストを返します。 indexOfメソッドは定義されていません。詳細情報はこちら

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

であるあなたは、配列に変換しArray.from()を使用し、

+0

'非ライブ===死んだ?あるいは、「静的な」PCが増えていますか? ;-) – RobG

+0

これは公式文書がMDNについて言うことです。 https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll –

+0

@RobG死んでいるよりも静的です。 :) –

関連する問題