Описание
У меня есть , что при нажатии один раз устанавливает класс элемента для «исчезания» и вставляет элемент в 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
Как исчезнуть и вставить элемент, затем исчезнуть и удалить элемент? ⇐ Html
Программисты Html
1744633653
Anonymous
[b] Описание [/b]
У меня есть , что при нажатии один раз устанавливает класс элемента для «исчезания» и вставляет элемент в DOM. Это визуально исчезает в элементе после введения в DOM. Когда кнопка снова нажимается, кнопка устанавливает класс элемента на «Fade-out», ожидает с SetTimeout () и удаляет элемент из DOM. Это визуально исчезает элемент перед удалением из Dom.
[b] проблема [/b]
Если элемент находится в DOM (после клики один раз), и я перехожу дважды в быстром последовательности, а затем элемент> исчезает, а затем исчезает, а затем искажает, а затем исчезает, а затем (затем исчезает. /> [b] ожидаемый результат [/b]
Я бы хотел, чтобы элемент от первого щелчка исчезает и удалялся из DOM, а затем, со второго щелчка, исчезает и восстанавливается в DOM. То есть элемент должен быть в DOM и 2) отображаться визуально после быстрого нажатия дважды, когда кнопка уже нажата один раз. Мое предположение состоит в том, что, поскольку второй щелчок происходит до завершения setTimeout () , контейнер «вставлен» (хотя он уже вставлен) в DOM до выполнения кода в SetTimeout () (который удаляет из DOM). Второе событие Click Click) выполняется после события setTimeout () (происходит в первом событии щелчков мыши)?
[b] code [/b]
Прикреплен ниже, минимальный воспроизводимый пример моей проблемы.
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, я не уверен, использую ли я это неправильно, или у моего подхода есть недостатки.
Заранее!
Подробнее здесь: [url]https://stackoverflow.com/questions/73133421/how-to-fade-in-and-insert-element-then-fade-out-and-remove-element[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия