Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2021, 17:16
Новичок на форуме
Отправить личное сообщение для один Посмотреть профиль Найти все сообщения от один
 
Регистрация: 02.04.2021
Сообщений: 5

Почему не работает цикл for?
Кгда пишу цикл с последним выражением i++, то цикл работает нормально. Когда пытаюсь задать шаг другой, например "i+6", то страница виснет на цикле. Вот весь код:
<script>
          let thCollect = document.getElementsByTagName('th');
      for (let i=0; i <= thCollect.length; i+6){
             thCollect[i].style.backgroundColor='red';
          }
      </script>

То есть при i++ все ячейки таблицы окрашиваются в красное.
А когда ставлю шаг "i+6", то страница виснет на цикле.
Почему?
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2021, 17:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от один
Кгда пишу цикл с последним выражением i++, то цикл работает нормально.
сделайте проверку есть ли элемент с индексом i, прежде чем стиль менять, и на всякий случай (строка 3)элементов с индексом равным длине списка не существует в js.

Последний раз редактировалось рони, 13.04.2021 в 17:31.
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2021, 17:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от один
А когда ставлю шаг "i+6", то страница виснет на цикле.
как написать правильно, читать тут Сокращённая арифметика с присваиванием
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2021, 17:31
Новичок на форуме
Отправить личное сообщение для один Посмотреть профиль Найти все сообщения от один
 
Регистрация: 02.04.2021
Сообщений: 5

элемент с индексом i есть, это первый элемент массива, проверял.
второе замечание в этом случае ни при чем, там ведь условие "пока меньше или равно"
Ответить с цитированием
  #5 (permalink)  
Старый 13.04.2021, 17:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

один,
for (let i=0; i <= thCollect.length; i+6){ красным отмечены ошибки, как исправить написано выше.
Ответить с цитированием
  #6 (permalink)  
Старый 13.04.2021, 17:35
Новичок на форуме
Отправить личное сообщение для один Посмотреть профиль Найти все сообщения от один
 
Регистрация: 02.04.2021
Сообщений: 5

вау, понял! i+=6 i=i+6
заработало.
Спасибо.
Я думал, только выражение надо записать, без присваивания. Не делaл еще шаг отличный от i++.
Ответить с цитированием
  #7 (permalink)  
Старый 13.04.2021, 17:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

один,
i <= thCollect.length так вы дойдёте до несущестующего элемента.
а так i+6 никогда не измените i, i всегда ноль, поэтому цикл получается бесконечным.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает делегирование? seotapki Events/DOM/Window 6 17.02.2019 09:46
Почему перебор элементов не работает по кругу Sinevik Общие вопросы Javascript 4 27.12.2017 01:41
Почему Jquery не работает в arcticmodal при вызове окна с большой высотой? sergey24 Общие вопросы Javascript 5 21.09.2017 15:49
Почему не работает? Rora Общие вопросы Javascript 7 10.05.2017 10:09
почему один вызов load работает, а другой - нет kravru jQuery 1 16.09.2013 20:51