2016-04-20 8 views
2

同じクラスを持つ一連のDOM要素を配列内に配置し、.indexof()を使用してそれらのうちの1つのインデックスを見つけることを試みました。しかし、それは動作していないようです。私は間違ったことを書いたのですか?または、配列内の要素のインデックスを見つけることができる他の方法があるはずですか? 「:digits.indexOfは関数ではありませんキャッチされない例外TypeErrorが」ここindexOf()で配列を検索できません

はそれだけでことを私に言っておくコード

window.onload = function(){ 
    var addBtn = document.querySelectorAll(".add"); 
    for(var i = 0; i < addBtn.length; i++){ 
     addBtn[i].onclick = addTime; 
    } 
}; 

function addTime(){ 
    var update = parseInt(this.parentElement.getElementsByTagName("SPAN")[0].innerHTML) + 1; 
    var digits = this.parentElement.parentElement.querySelectorAll(".digit"); 
    if(digits.indexOf(this.parentElement) % 2){ //Uncaught TypeError: digits.indexOf is not a function 

    }else{ 
     carryOn(this, update); 
    } 
} 

の小さな作品です。

+0

'indexOf'が' 'DOMElementのNodelist' – Rayon

+3

' [] .slice.call(桁) '役立つかもしれないのではないarray'のプロトタイプです! – Rayon

+0

@RayonDabreまたは['Array.from(digits)'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) –

答えて

0

querySelectorAllNodeListを返すと、それは配列のようなオブジェクトであり、実際の配列ではありません。メソッドはindexOfではありません。

次のことが可能です。配列のようなArray.prototype.indexOf.call(digits, ....)によって上

  1. キャストアレイ法。

  2. Array.from(digits)によって実配列を生成する。

関連する問題