老师看看我的为什么点击删除后马上点击取消删除,他还是删除了

来源: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回答

好帮手慕星星

2019-10-22

同学你好,

理解的有问题,可以自己定义函数,主要是定时器的问题。

用两次setTimeout,就是两个不同的定时器,所以在第二个点击事件中取消的是第二个定时器,第一个定时器并没有清除,仍然会删除。参考修改:

http://img.mukewang.com/climg/5dae7a12091d303308530537.jpg

可以修改测试下,祝学习愉快!

欢迎采纳~

0

0 学习 · 40143 问题

查看课程