【发布时间】:2022-01-25 12:40:38
【问题描述】:
为什么此代码中的 setTimeOut 不起作用?我想逐个显示子菜单,我不确定方法是否好,有人告诉我关闭有问题
代码:
function changestyle(){
var els = document.getElementsByClassName("submenu");
for(var i = 0; i < els.length-1; i++)
{
const showone = function(){
els[i].style.display = 'block';
};
const hideone = function(){
els[i].style.display = 'none';
};
setTimeout(showone, 2000);
setTimeout(hideone, 2000);
}
}
【问题讨论】:
-
您的
showone呼叫和您的hideone呼叫之间有0 毫秒。setTimeout是非阻塞的。预期的结果究竟是什么?见How do I add a delay in a JavaScript loop?。 -
如果不使用
let i = 0,那么是的,闭包有问题。
标签: javascript css dom