1

function SquareIndex() {
  let item = document.getElementsByClassName('square');
  for (let i = 0; i < item.length; i++) {
    item[i].onclick = function() {
      alert(i);
    }
  }
}

SquareIndex();

<div class="square">0</div>
<div class="square">1</div>

В кратце , я знаю что делает эта функция , но мне не понятно до конца как там все происходит . Проверил что запускается функция , в последствии и сам цикл , ровно 1 раз. Это получается на каждый элемент с классом (square) вешается "обработчик события - onclick"? Тогда как запоминается индекс каждого элемента списка. Тяжело объяснить свою мысль, так что sorry за такую формулировку.

  • @Grundy прошу заметить в вопросе поведение иное, чем в том, на который ссылается формулировка о закрытии..., хоть в одном из ответов и есть объяснение... – Stranger in the Q Feb 21 '20 at 18:03
  • В целом это из-за let, с var было бы значение с последней итерации – Stranger in the Q Feb 21 '20 at 18:05
  • @StrangerintheQ, в вопросе: как запоминается индекс каждого элемента списка - в дубликате как раз про это – Grundy Feb 21 '20 at 18:57

1 Answers1

0

    function SquareIndex() { 
        item = document.getElementsByClassName('square'); // Получаем все элементы с классом square
        alert('SquareIndex function is ready'); // При запуске функции выводим сообщение
        for (let i = 0; i < item.length; i++) { // Перебираем элементы
            item[i].onclick = function() { // Для каждого элемента с классом square при нажатии выводим сообщение
                alert(i); // Вот вывод сообщения с порядковым номеров этого элемента, по которому нажали.
            }
        }
    }
Denis640Kb
  • 14,089
  • Всё же по "дурацки" сформулировал вопрос, вот я вызываю функцию, цикл прошел , но я ведь не нажимал на элементы, а цикл уже закончился, как и сама функция. Так почему после завершения всех итераций , мне все равно выводит сообщения при клике на соответствующие элементы? – Владик Кузнецов Feb 21 '20 at 16:21