setTimeout 跟addEventListener问题
问题描述
这是放在菜鸟上写的代码 ;
setTimeout 无论设置多长时间 ,innerHtml都是直接出现最终结果;
这是为啥呢
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
文档添加 onmousemove 事件句柄,当在文档中移动鼠标时会显示随机数。
点击按钮移除事件句柄。
<button id='demo1'>点我</button>
<p id="demo">
<script>
document.getElementById("demo1").addEventListener("click", myFunction);
var time = 5;
function myFunction() {
document.getElementById("demo").innerHTML = time;
removeHandler(time);
}
function removeHandler(i) {
i--;
document.getElementById("demo").innerHTML = i;
setTimeout(removeHandler(i),1000);
}
</script>
</body>
</html>
问题解答
回答1:setTime()的回调函数是异步执行,只有主调用栈清空才会从任务队列进入调用栈,所以就会出现你说的这种情况
相关文章:
1. javascript - html 中select如何修改样式,鼠标悬浮时改变option样式,有没有插件啊2. javascript - weex和node,js到底是怎样一个关系呢?3. javascript - 父级设置了相对定位。子元素设置了绝对定位。子元素中包含了浮动的table,这个时候高度不能自适应。4. javascript - vue异步数据打印问题5. Span标签6. dockerfile - 为什么docker容器启动不了?7. javascript - 表单ajax提交后跳转,手机按返回又进入这个表单页了!!8. docker start -a dockername 老是卡住,什么情况?9. golang - 用IDE看docker源码时的小问题10. apache - 想把之前写的单机版 windows 软件改成网络版,让每个用户可以注册并登录。类似 qq 的登陆,怎么架设服务器呢?
