Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не работает цикл for? (https://javascript.ru/forum/misc/82283-pochemu-ne-rabotaet-cikl.html)

один 13.04.2021 17:16

Почему не работает цикл 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", то страница виснет на цикле.
Почему?

рони 13.04.2021 17:26

Цитата:

Сообщение от один
Кгда пишу цикл с последним выражением i++, то цикл работает нормально.

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

рони 13.04.2021 17:28

Цитата:

Сообщение от один
А когда ставлю шаг "i+6", то страница виснет на цикле.

как написать правильно, читать тут Сокращённая арифметика с присваиванием

один 13.04.2021 17:31

элемент с индексом i есть, это первый элемент массива, проверял.
второе замечание в этом случае ни при чем, там ведь условие "пока меньше или равно"

рони 13.04.2021 17:34

один,
for (let i=0; i <= thCollect.length; i+6){ красным отмечены ошибки, как исправить написано выше.

один 13.04.2021 17:35

вау, понял! i+=6 i=i+6
заработало.
Спасибо.
Я думал, только выражение надо записать, без присваивания. Не делaл еще шаг отличный от i++.

рони 13.04.2021 17:38

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


Часовой пояс GMT +3, время: 11:02.