2015-09-07 4 views
-1

У меня есть следующий кодUncaught TypeError: Не удается прочитать свойство «IndexOf» неопределенных в цикл

var results = ["img", "some_class"]; 

for (var i = 0; i <= results.length; i++){ 

     if (results[i] === "input"){ 
      elements = []; 

     } else if (results[i].indexOf("class") > -1){ 

      className = results[i]; 
      b = document.getElementsByClassName; 

      for (var i = 0; i < b.length; i++){ 
       elements.push(b[i]); 
      } 

     } else if (results[i].indexOf("id") > -1){ 

      id = results[i]; 
      searchId = document.getElementById(id); 
      elements.push(searchId); 
      } 
     } 

Я пытаюсь проверить, является ли какой-либо из элементов в results массива содержат строки «класс» или «id», но я получаю Uncaught TypeError: Cannot read property 'indexOf' of undefined

Вы можете видеть, что массив results действительно содержит «класс» внутри второго элемента, но мой код не играет в мяч.

Любая помощь будет высоко ценится :)

+2

Вы не можете использовать 'i <= results.length' в цикле for, потому что массивы индексируются 0. Когда 'i'' '' '' 'results.length', вы вне пределов! – azium

ответ

0

Заменить <= на for заявление с только <.

В вашем конкретном случае results.length равно 3, поэтому на последней итерации вы пытаетесь получить доступ к results[3], что равно undefined и вызывает ошибку.

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