2016-04-20 2 views
2

Я попытался поместить ряд элементов DOM, имеющих один и тот же класс внутри массива, а затем попытаться найти, какой индекс является одним из них, расположенным с помощью .indexof(). Однако похоже, что он не работает. Я что-то написал неправильно? Или должны быть другие способы, чтобы я мог найти индекс элемента в массиве?Не удается найти массив по 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); 
    } 
} 

Это просто продолжает говорить мне, что «Uncaught TypeError: digits.indexOf не является функция».

+0

'indexOf' является прототипом' array' не 'DOMElement Nodelist' – Rayon

+3

' [] .slice.call (цифр) 'может помочь! – Rayon

+0

@RayonDabre Или ['Array.from (цифры)'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) –

ответ

0

querySelectorAll return a NodeList, это массивный объект, а не фактический массив. Он не имеет методов indexOf.

Вы можете:

  1. литая метод массива на массив-как по Array.prototype.indexOf.call(digits, ....).

  2. произвести реальный массив по Array.from(digits).

Смежные вопросы