为什么不能取消计时

来源:8-17 编程练习

慕用9564390

2017-06-03 19:53

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编程练习8</title>  
</head>
<body> 
    <p>
        <b id="seconds">5</b>秒后进入新界面&nbsp;
        <a href="javascript:goBack();">返回</a>
    </p>
    <form>
        <input type="button" value="取消倒计时" onclick="quxiao()">
    </form>
    <script type = "text/javascript">
        function jisi(){
        var sec = document.getElementById("seconds");
        var i = 5;
        var timer = setInterval(function(){
        i--;
        sec.innerHTML = i;
        if(i==1){
            window.location.href =  "http://www.imooc.com/";
        }
    },1000);
        }
        jisi();
        function quxiao(){
            clearInterval(timer);
        }
    </script>
<!--发现如果建立函数jisi则不能建立函数quxiao了,
建立函数就只能使用onclick="clearInterval(timer)"
使用quxiao函数的话就必须不能给上面的代码建立成一个jisi函数
-->
</body>
</html>


写回答 关注

1回答

  • 慕勒7123956
    2017-06-03 20:15:45

    你把timer的定义写在jishi函数外面,因为这是一个函数作用域,别的函数获取不到这个变量的

    var timer;
            function jisi(){
            var sec = document.getElementById("seconds");
            var i = 5;
             timer = setInterval(function(){
            i--;
            sec.innerHTML = i;
            if(i==1){
                window.location.href =  "http://www.imooc.com/";
            }
        },1000);
            }
            jisi();
            function quxiao(){
                clearInterval(timer);
            }


JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题