@Uspeshnyy_Programmist
Человек который смог.

Почему передается i всем параграфам?

Добрый день, тостерята. Кратко о ситуации которая сложилась у меня . Есть параграф и подпараграф, мне нужно что бы при клике на параграф у его дочернего елемента ( соответственно подпараграфа) появился еще один класс ну или удалился. Все вроде бы работало когда он был один, но когда параграфов стало больше чем один, мой код ( в 5 строк ) сломался.
let buts = document.querySelectorAll('.answer-page');    
let togs = document.querySelectorAll('.answer-subpage')
    for (let i = 0; i < buts.length; i++) {
        buts[i].addEventListener('click', Addclass(i));
        
    }
function Addclass (i) {

    togs[i].classList.toggle("active")
}

Я не догадался до иного решения чем передать тоже i через свойства функции дочернему параграфу, но вместо того что бы при клике на основной параграф открывался дочерний, они изначально открыты, и мне это не подходит. Может у вас есть какие-то идеи? ссылку конечно же оставлю.
  • Вопрос задан
  • 103 просмотра
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
buts[i].addEventListener('click', Addclass(i));
Так вы вызываете функцию Addclass, и ее возвращаемое значение передаете в addEventListener, а должны передавать функцию, которую нужно вызвать при клике.
Вообще, вам не нужен togs, просто у текущего кликнутого элемента берите children, и добавляйте нужный класс.
Ответ написан
Комментировать
hzzzzl
@hzzzzl
buts[i].addEventListener('click', Addclass(i));
// когда выполнится клик - выполнить функцию, которую вернет Addclass(i)


for (let i = 0; i < buts.length; i++) {
        buts[i].addEventListener('click', () => Addclass(i));
// когда выполнится клик - выполнить функцию, которую вернет безыменная функция
// а вернет она Addclass(i)
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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