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

Как исправить код функции, создающей и удаляющей DIV, чтобы она заработала?

В календаре есть даты(div dates) обозначены, как const datesElement
Есть отдельный div week, оборачивающий каждую неделю
Пытаюсь написать код на отображение события каждой даты по клику на ней, обозначил его card
card in card out содержат анимацию открытия и закрытия окна
По сути код должен делать следующее при нажатии на дату:
1. проверить есть ли открытое событие(card)
2. если есть - закрыть его и удалить div
3. создать новый div card и открыть событие к текущей дате
Почему-то код создает отдельный пустой div после всех div week и больше ничего не делает, даже не удаляет при нажатии на другую дату, не могу понять, где ошибка, помогите исправить.

function addCard(){
        let card, arrow;
        let currentOpened = datesElement.querySelector('.card');
        if(currentOpened && currentOpened.parentNode === week.parentNode) {
            card = currentOpened;
            arrow = datesElement.querySelector('.arrow');
        } else {
            if(currentOpened) {
                currentOpened.addEventListener('webkitAnimationEnd', function(){
                    currentOpened.parentNode.removeChild(currentOpened);
                    });
                currentOpened.addEventListener('oanimationend', function(){
                    currentOpened.parentNode.removeChild(currentOpened);
                    });
                currentOpened.addEventListener('msAnimationEnd', function(){
                    currentOpened.parentNode.removeChild(currentOpened);
                    });
                currentOpened.addEventListener('animationend', function(){
                    currentOpened.parentNode.removeChild(currentOpened);
                    });
                currentOpened.className = 'card out';
            }
            card = document.createElement('div', 'card in');
            let arrow = document.createElement('div', 'arrow');
            card.appendChild(arrow);
            week.parentNode.appendChild(card);
        }
    }

    datesElement.addEventListener('click', () => {
        addCard();
    })
  • Вопрос задан
  • 64 просмотра
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
IvanU7n
@IvanU7n
nothing interesting here
подозреваю, что в createElement() ибо:
1) второй её параметр принимает не строку, а объект
2) при создании не устанавливается никаких атрибутов (тем более классов), это нужно делать отдельно после создания
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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