【发布时间】:2020-08-27 16:25:24
【问题描述】:
我有这个脚本,我在其中突出显示单击的 div 及其父项,然后分别将它们再次变为白色。但是,我想停止连续点击,只允许一次点击直到 setTimeout 完成。基本上,用户应该等待整个动画完成后再点击。
const allDivElements = document.querySelectorAll("div");
let timeout = 300;
allDivElements.forEach((div) => {
div.addEventListener("click", function (e) {
setTimeout(() => {
changeBg(this, true);
setTimeout(() => {
changeBg(this, false);
timeout = 300;
}, timeout);
}, timeout);
timeout += 300;
});
});
function changeBg(div, phase) {
if (phase) div.style.backgroundColor = "lightblue";
else div.style.backgroundColor = "#fff";
}
就我查看可能的解决方案而言,在 setTimeout 方法之前,我无法找到阻止点击事件的解决方案。任何详细的帮助将不胜感激。
编辑:对不起,如果我造成混乱。这是整个应用程序的链接,以防您想测试它:https://codesandbox.io/s/busy-goldstine-ope9w?file=/src/index.js
提前致谢!
【问题讨论】:
标签: javascript events nested click settimeout