问答详情
源自:8-17 编程练习

代码问题求指教,一大堆bug

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>浏览器对象</title>
</head>
<body>
    <h3>操作成功</h3>
    <b id="second">5</b>秒后回到主页面&nbsp;<a href="javasript:goback();">返回</a>
    <script type="text/javascript">
        var i = 5;
        var sec = document.getElementById("second");
        function sec(){
            i--;
            sec.innerHTML=i;
            if(i==1){
               location.href="http://www.baidu.com";
            }
            setTimeout("sec()",1000);
        }
       sec();
        function goback(){
            window.history.back();
        }
    </script>
</body>
</html>

当把var sec 定义在sec()函数外面时,执行出错

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>浏览器对象</title>
</head>
<body>
    <h3>操作成功</h3>
    <b id="second">5</b>秒后回到主页面&nbsp;<a href="javasript:goback();">返回</a>
    <script type="text/javascript">
        var i = 5;
        function sec(){
            var sec = document.getElementById("second");
            i--;
            sec.innerHTML=i;
            if(i==1){
               location.href="http://www.baidu.com";
            }
            setTimeout("sec()",1000);
        }
       sec();
        function goback(){
            window.history.back();
        }
    </script>
</body>
</html>

而定义在sec()里面就没有问题了。。。有点想不明白是什么原因

还有,我发现如果网速比较慢的话,秒数会一直读到负数直到打开网页,不知道有没有什么 解决办法。

用firefox浏览器,点击返回总是提示:Firefox 不知道如何打开这个地址,因为协议 (javasript) 未与任何程序关联,或者不允许在这种情况下进行。这是什么原因呢?

请教大家!谢谢!

提问者:素本往后 2016-12-02 17:13

个回答

  • cdcq
    2016-12-02 17:48:54
    已采纳

    命名冲突了,sec在sec函数里的话会占时把函数覆盖掉,也就是说在sec函数里面sec不再表示函数而是变量,但如果在外面,电脑就不能判断sec指的是函数还是变量了