Как исчезнуть и вставить элемент, затем исчезнуть и удалить элемент?Html

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 Как исчезнуть и вставить элемент, затем исчезнуть и удалить элемент?

Сообщение Anonymous »

Описание
У меня есть , что при нажатии один раз устанавливает класс элемента для «исчезания» и вставляет элемент в DOM. Это визуально исчезает в элементе после введения в DOM. Когда кнопка снова нажимается, кнопка устанавливает класс элемента на «Fade-out», ожидает с SetTimeout () и удаляет элемент из DOM. Это визуально исчезает элемент перед удалением из Dom.
проблема
Если элемент находится в DOM (после клики один раз), и я перехожу дважды в быстром последовательности, а затем элемент> исчезает, а затем исчезает, а затем искажает, а затем исчезает, а затем (затем исчезает. /> ожидаемый результат
Я бы хотел, чтобы элемент от первого щелчка исчезает и удалялся из DOM, а затем, со второго щелчка, исчезает и восстанавливается в DOM. То есть элемент должен быть в DOM и 2) отображаться визуально после быстрого нажатия дважды, когда кнопка уже нажата один раз. Мое предположение состоит в том, что, поскольку второй щелчок происходит до завершения setTimeout () , контейнер «вставлен» (хотя он уже вставлен) в DOM до выполнения кода в SetTimeout () (который удаляет из DOM). Второе событие Click Click) выполняется после события setTimeout () (происходит в первом событии щелчков мыши)?
code
Прикреплен ниже, минимальный воспроизводимый пример моей проблемы.

const container = document.createElement("div");

let toggled = false;

const button = document.querySelector("button");
button.addEventListener("click", event => {
toggled = !toggled;
if (toggled) {
container.setAttribute("class", "fade-in");
button.parentElement.insertBefore(container, button.nextSibling);
} else {
container.setAttribute("class", "fade-out");
setTimeout(() => {container.remove();}, 500)
}
})< /code>
div {
width: 100px;
height: 100px;
background-color: black;
}

.fade-in {
animation: fade-in 500ms linear;
}

@keyframes fade-in {
0% {
opacity: 0;
}

100% {
opacity: 1;
}
}

.fade-out {
animation: fade-out 500ms linear;
}

@keyframes fade-out {
0% {
opacity: 1;
}

100% {
opacity: 0;
}
}< /code>








Document


Fade In / Fade Out


< /code>
< /div>
< /div>
< /p>
Я пытался использовать обещания, но, к сожалению, ни одна из моих попыток не сработала. Поскольку я новичок в JavaScript, я не уверен, использую ли я это неправильно, или у моего подхода есть недостатки.
Заранее!

Подробнее здесь: https://stackoverflow.com/questions/731 ... ve-element
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Html»