1

Пытаюсь написать скрипт, который делает следующее: Ищет все теги blockquote на странице, а затем первый тег h3 внутри каждого blockquote делает кнопкой, по щелчку на которую скрываются/отображаются все элементы внутри blockquote кроме самого h3.

Я написал скрипт, но он работает некорректно: по щелчку на любой из h3 всегда скрываются/отображаются только элементы последнего blockquote. Не могу понять в чем проблема. Буду очень благодарен за помощь.

Мой скрипт:

var elements = document.getElementsByTagName('blockquote')
for (var i = 0; i < elements.length; i++) {
    var element = elements[i];
    var content = elements[i].getElementsByTagName('*');
    var blockquoteBtn = element.getElementsByTagName('h3');
    blockquoteBtn[0].onclick = function () {
        for (var i = 0; i < content.length; i++) {
            content[i + 1].style.display === 'none' ? content[i + 1].style.display = 'block' : content[i + 1].style.display = 'none';
        };
    };
};
  • @AntonShchyrov, извините за грубость, но где здесь асинхронщина в коде автора? – Август Aug 25 '20 at 12:40
  • @AntonShchyrov, аа, прошу прощения. обратил внимания только на название вопроса, но не смотрел его суть. да, Ваша ссылка полезна для ответа на вопрос, но всё таки это разные темы (хоть и имеют общий ответ) – Август Aug 25 '20 at 12:59
  • @Август Это идентичные темы. Какая разница функция выполняется по таймеру или по действию пользователя? Суть одна и та же: мы в одном месте конструируем функцию, которая будет вызвана из другого места и в произвольный момент – Anton Shchyrov Aug 25 '20 at 13:30
  • 2
    Быстрый "магический" ответ - замените var i = 0 на let i = 0. – Stepan Kasyanenko Aug 25 '20 at 13:33
  • @AntonShchyrov, я Вас понимаю, но этого не понять новичкам, которые ищут ответ. пользователи, с подобными вопросами, будут искать здесь/вгугле вопрос о событиях, а не о асинхронности. если закрыть этот вопрос как дубляж, то его не будет в поиске, соответственно те, кто будут искать вопросы по событиях, не найдут ответа. с таким успехом можно сказать, что все вопросы являются дубляжами, так как они дублируют главную тему - документация js – Август Aug 25 '20 at 13:53
  • @Август вопросы, закрытые как дубли, отлично находятся через поиск. Все, что потом нужно - это кликнуть на оригинальный вопрос – Anton Shchyrov Aug 25 '20 at 16:03

0 Answers0