JS, что-то не так с циклом

227
02 ноября 2017, 08:32
function phrase_massive() {
    document.getElementById('phrase').innerHTML = "";
    for (var i = 0; i <= phrases.length; i++) {
         document.getElementById('phrase').innerHTML = phrases[i];
    }
}
setTimeout(phrase_massive, 1000);

Не работает, пишет "undefined". Подскажите, пожалуйста, что не так

Answer 1

Вариант с замыканием :

var phrases = [1, 2, 3, 4, 5, 6, 7]; 
 
function phrase_massive() { 
  document.getElementById('phrase').innerHTML = ""; 
  for (var i = 0; i < phrases.length; i++) { 
    setTime(i); 
  } 
}; 
 
function setTime(_i) { 
  setTimeout(function() { 
    document.getElementById('phrase').innerHTML = phrases[_i].toString(); 
  }, _i * 1000); 
}; 
 
phrase_massive();
<p id="phrase"></p>

Вариант с использованием let :

var phrases = [1, 2, 3, 4, 5, 6, 7]; 
 
function phrase_massive() { 
  document.getElementById('phrase').innerHTML = ""; 
  for (let i = 0; i < phrases.length; i++) { 
    setTimeout(function() { 
      document.getElementById('phrase').innerHTML = phrases[i].toString(); 
    }, i * 1000); 
  } 
}; 
 
phrase_massive();
<p id="phrase"></p>

READ ALSO
Рендер результата работы цикла

Рендер результата работы цикла

Доброго времени суток, в input пользователь вводит вопросы, по событие keyup каждый раз запускается функция которая сравнивает совпадения в вводе...

195
Не работает ScriptProcessorNode с OfflineContext

Не работает ScriptProcessorNode с OfflineContext

Не работает ScriptProcessorNode с OfflineContext

296
Добавление класса по клику + проверка на наличие класса и добавление класса другому div

Добавление класса по клику + проверка на наличие класса и добавление класса другому div

У меня немного запутанное задание: нужно чтобы при клике на inputinput-checkbox другому div

285
Как правильно доработать скрипт?

Как правильно доработать скрипт?

Добрый день! Помогите, пожалуйста, доработать скриптБлок

312