同一个功能点击事件如何设置不同的延时
How to set different delays for the same function click event
关于我在我的网站上实施的 javascript 代码,我需要一些帮助。基本上当点击固定 header 上的汉堡包时,会显示全屏移动菜单,但在它完全出现之前我设置了一个持续 0.25 秒的动画。
通过单击汉堡包,我触发 class header-proper-state
将 header 位置设置为 relative
以便能够在 [=13= 上看到和使用汉堡包] 显示菜单时的位置。除了 .25 秒 header 丢失并在全屏菜单完全显示之前产生令人不快的视觉效果外,一切正常。作为解决方法,我为 toggle
设置了 300 毫秒的延迟,并且在菜单完全显示之前我没有视觉问题,但是当我再次单击汉堡包关闭按钮时,我必须再等待 300 毫秒才能看到 header 在固定位置。因此,我尝试将 toogle
更改为 add
,并在单击关闭按钮 is-active
并使用 remove
时为新功能设置不同的延迟(如 40)删除将 header 定位在 relative
上的 class,而我们显示的是 meby,以便纠正延迟,但我从控制台收到错误并且没有 class删除,基本上它说 close
是空的。我错过了什么?
这是我的代码:
document.addEventListener("DOMContentLoaded", function(event) {
let hamb = document.querySelector('.hamburger')
let bdy = document.querySelector('body')
let close = document.querySelector('.is-active')
hamb.addEventListener('click', function(e) {
this.classList.toggle('is-active');
setTimeout(function() {
document.querySelector('.mobile-menu').classList.toggle('mob-menu-show')
}, 50);
setTimeout(function() {
document.querySelector('.mob-menu-base').classList.toggle('mob-menu-base-anim')
}, 50);
setTimeout(function() {
document.querySelector('.mobile-menu-content').classList.toggle('mobile-menu-animations')
}, 100);
setTimeout(function() {
document.querySelector('.header-wrapper').classList.add('header-proper-state')
}, 300);
bdy.classList.toggle('prevent-scroll');
});
close.addEventListener('click', function(e) {
setTimeout(function() {
document.querySelector('.header-wrapper').classList.remove('header-proper-state')
}, 40);
});
});
变量close
设置在代码的开头。届时它将是 null
因为没有元素处于活动状态 class
.
它似乎从未更改过,所以当您对其执行 addEventListener
时,您会收到错误消息。
变量 close
每次使用前都需要更新,以确保它指向具有 class="is-active"
.
的当前元素
关于我在我的网站上实施的 javascript 代码,我需要一些帮助。基本上当点击固定 header 上的汉堡包时,会显示全屏移动菜单,但在它完全出现之前我设置了一个持续 0.25 秒的动画。
通过单击汉堡包,我触发 class header-proper-state
将 header 位置设置为 relative
以便能够在 [=13= 上看到和使用汉堡包] 显示菜单时的位置。除了 .25 秒 header 丢失并在全屏菜单完全显示之前产生令人不快的视觉效果外,一切正常。作为解决方法,我为 toggle
设置了 300 毫秒的延迟,并且在菜单完全显示之前我没有视觉问题,但是当我再次单击汉堡包关闭按钮时,我必须再等待 300 毫秒才能看到 header 在固定位置。因此,我尝试将 toogle
更改为 add
,并在单击关闭按钮 is-active
并使用 remove
时为新功能设置不同的延迟(如 40)删除将 header 定位在 relative
上的 class,而我们显示的是 meby,以便纠正延迟,但我从控制台收到错误并且没有 class删除,基本上它说 close
是空的。我错过了什么?
这是我的代码:
document.addEventListener("DOMContentLoaded", function(event) {
let hamb = document.querySelector('.hamburger')
let bdy = document.querySelector('body')
let close = document.querySelector('.is-active')
hamb.addEventListener('click', function(e) {
this.classList.toggle('is-active');
setTimeout(function() {
document.querySelector('.mobile-menu').classList.toggle('mob-menu-show')
}, 50);
setTimeout(function() {
document.querySelector('.mob-menu-base').classList.toggle('mob-menu-base-anim')
}, 50);
setTimeout(function() {
document.querySelector('.mobile-menu-content').classList.toggle('mobile-menu-animations')
}, 100);
setTimeout(function() {
document.querySelector('.header-wrapper').classList.add('header-proper-state')
}, 300);
bdy.classList.toggle('prevent-scroll');
});
close.addEventListener('click', function(e) {
setTimeout(function() {
document.querySelector('.header-wrapper').classList.remove('header-proper-state')
}, 40);
});
});
变量close
设置在代码的开头。届时它将是 null
因为没有元素处于活动状态 class
.
它似乎从未更改过,所以当您对其执行 addEventListener
时,您会收到错误消息。
变量 close
每次使用前都需要更新,以确保它指向具有 class="is-active"
.