evgeniy8705
@evgeniy8705
Повелитель вселенной

Почему не работает галерея и крушится вкладка?

На сайте learn.javascript.ru есть решение задачи по созданию галереи.
Вот оно - plnkr.co/edit/5t7oDEbrx8G3UjUqtM2q
Почему если не сохранять объект события в переменную, ничего не работает, все зависает и вкладка рушится?

Почему не работает вот так?:
var largeImg = document.getElementById('largeImg');

document.getElementById('thumbs').onclick = function(event) {
  while (event.target != this) {

    if (event.target.nodeName == 'A') {
      largeImg.src = event.target.href;
      return false;
    }

    event.target = event.target.parentNode;
  }

}
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 2
mbeloshitsky
@mbeloshitsky
Вебдев, систем оперейшонс, ж.д. автоматика
Потому что не сохраняя событие в переменную вы в своем цикле, в строчке
event.target = event.target.parentNode;
обновляете не просто собственную переменную, а поле браузерного события. Такими объектами пользуетесь не только вы, но и браузер, поведение которого и может приводить к зависанию.

Конкретнее, что именно может приводить к зависанию, указать не могу, не сталкивался, наверное какие-нибудь стадии "всплытия" и подобные вещи.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега CSS
Всё очень просто: свойство target объекта Event недоступно для записи. Соответственно, ваш цикл становится бесконечным, ведь e.target никогда не изменяется.
Никогда не изменяйте ничего в стандартных объектах - этим вы оградите себя от огромного количества проблем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы