Задать вопрос
@andreyfilippov3001

Почему скрипт работает только на первом div'e?

Есть три div'a. Я писал для них скрипт изначально так, чтобы обрабатывались все (с querySelectorAll и перебором коллекций через for), но сейчас работает только на первом. Скрипт просто зачёркивает text при нажатии на flag и показывает close, при нажатии на который task удаляется.

В Html (все остальные div'ы такие же):
<div class="wrapper">
        <div class="item">
            <div class="item__title">Понедельник</div>
            <ul class="item__list">
                <li class="item__list__task">
                    <div class="item__list__task__flag"></div>
                    <div class="item__list__task__text">Задача</div>
                    <div class="item__list__task__close"></div>
                </li>
                <li class="item__list__task">
                    <div class="item__list__task__flag"></div>
                    <div class="item__list__task__text">Задача</div>
                    <div class="item__list__task__close"></div>
                </li>
                <li class="item__list__task">
                    <div class="item__list__task__flag"></div>
                    <div class="item__list__task__text">Задача</div>
                    <div class="item__list__task__close"></div>
                </li>
            </ul>
        </div>
    </div>


В Js:
var items = document.querySelectorAll('.item');

var doneTask = function (task){
    var flag = task.querySelector('.item__list__task__flag');
    var text = task.querySelector('.item__list__task__text');
    var close = task.querySelector('.item__list__task__close');

    flag.addEventListener('click', function(){
        flag.classList.toggle('item__list__task__flag_active');
        text.classList.toggle('item__list__task__text_active');
        close.classList.toggle('item__list__task__close_active');
    })
}

var delTask = function (task) {
    var close = task.querySelector('.item__list__task__close');

    close.addEventListener('click', function(item){
        task.remove();
    })
}

for (var i = 0; i < items.length; i++){
    var list = items[i].querySelector('.item__list');
    var tasks = list.children;

    for(var i = 0; i < tasks.length; i++){
        doneTask(tasks[i]);
        delTask(tasks[i]);
    }
}
  • Вопрос задан
  • 144 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
Переименуйте переменную внутреннего цикла а лучше пользуйтесь современным синтаксисом const или let
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы