老师看看我的为什么点击删除后马上点击取消删除,他还是删除了
来源:1-21 编程练习
RahodJoe
2019-10-22 11:03:10
是因为已经执行了我自己设定的deleteContents函数,不管有没有clearTimeOut,相当于已经调用了一次deleteContents,所以只要点击了取消,就一定会删除是吗?这一题应该不能自己定义函数哈,直接把innerHTML为空写进setTimeOut是吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>定时器</title>
<style type="text/css">
div{width:400px;height:120px;margin-top:50px;border:2px solid gray;padding:10px;}
</style>
</head>
<body>
<input type="button" value="删除">
<input type="button" value="取消删除">
<div>点击"删除"按钮后,里面的内容将在3秒钟后消失;<br/><br/>如点击了"删除"后又不想删除内容,请在点击"删除"按钮3秒之内点击"取消删除"按钮即可</div>
<script type="text/javascript">
//补充代码
var btnDelete=document.getElementsByTagName("input")[0];
var btnCancelDelete=document.getElementsByTagName("input")[1];
var divContent=document.getElementsByTagName("div")[0];
function deleteContents(){
divContent.innerHTML="";
}
btnDelete.onclick=function(){
setTimeout(deleteContents,3000);
}
btnCancelDelete.onclick=function(){
var idSetTimeOut=setTimeout(deleteContents,3000);
clearTimeout(idSetTimeOut);
}
</script>
</body>
</html>1回答
同学你好,
理解的有问题,可以自己定义函数,主要是定时器的问题。
用两次setTimeout,就是两个不同的定时器,所以在第二个点击事件中取消的是第二个定时器,第一个定时器并没有清除,仍然会删除。参考修改:

可以修改测试下,祝学习愉快!
欢迎采纳~
相似问题
回答 3
回答 1