老师我有一个问题

来源:1-21 编程练习

蛋挞狂魔

2020-12-13 00:10:34

# 具体遇到的问题
请问为什么定时器的id要在事件外先定义才可以实现后面清除定时器的功能?

如果我在点击事件中定义的话,就不是全局变量了吗?

如果我先点击了删除按钮,调用定时器之后不就产生了一个id变量吗,为什么在取消删除按钮的事件中无法接收到呢?

    ​   var a;

       db.onclick = function(){

           

           a = window.setTimeout(function(){

               txt.innerText="";

           }, 3000)

          

       }




# 粘贴全部相关代码,切记添加代码注释(请勿截图)

<!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 db = document.getElementsByTagName("input")[0];

       var cdb = document.getElementsByTagName("input")[1];

       var txt = document.getElementsByTagName("div")[0];

       var a;

       db.onclick = function(){

           

           a = window.setTimeout(function(){

               txt.innerText="";

           }, 3000)

          

       }

       cdb.onclick = function(){

           window.clearTimeout(a);

       }

       

    </script>

</body>

</html>


写回答

1回答

好帮手慕夭夭

2020-12-13

同学你好,这会涉及到后面阶段的内容,老师简单说一下,同学先提前作为了解。如下:

函数会形成一个局部作用域,在局部作用域中定义的变量叫做局部变量。而局部变量只能在当前函数中使用,外部拿不到。

所以事件函数中,如果使用var定义变量,那么只能在当前事件中使用,所以在另一个事件中拿不到这个变量哦。

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

祝学习愉快~

0

0 学习 · 40143 问题

查看课程