老师,这是为什么

老师,这是为什么

<!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 btn = document.getElementsByTagName("input");

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

       var x;

       btn[0].onclick = function(){

            var timeout = function(){

                div.innerHTML = "";

            }

            x = setTimeout(timeout,3000);

       }

       btn[1].onclick = function(){

            clearTimeout(x);

       }

    </script>

</body>

</html>



为什么我在外面定义了一个  var x;的变量,这个就好用了,如果我把这个变量写在下面,就不好用了。


<!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 btn = document.getElementsByTagName("input");

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

       // var x;

       btn[0].onclick = function(){

            var timeout = function(){

                div.innerHTML = "";

            }

            var x = setTimeout(timeout,3000);

       }

       btn[1].onclick = function(){

            clearTimeout(x);

       }

    </script>

</body>

</html>


这是为什么,麻烦老师了。


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
提问者 RiraRain 2019-03-21 22:44:33

额..........好像明白了,是不是因为,他是btn[0]里的变量,所以在btn[1]里面用x这个变量来清除超时的话,是不好用的? 但是不是说var是全局变量么,是说全局变量也不是随便就能用的呗,像这种在别的函数内设置的变量,在另一个函数里就不能用了么,是这个意思?

  • 同学,你好。var x是在btn[0]里面的定义的变量,是局部变量,因此它只能在btn[0]函数里面使用,当不用var声明x这个变量时,这个变量就是全局变量,不论它放在函数里面外面,都是全局变量,都可以在全局使用。 祝学习愉快!
    2019-03-22 10:04:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师