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

请问我的代码哪里不对?


为什么5秒没有变成4,3,2,1……?

提问者:virusos 2016-07-14 13:46

个回答

  • IT李小贱
    2016-07-14 14:57:08
    已采纳

    你的错误在于你的js位置写错了,你在js里获取id为timer这个元素的时候,浏览器并没有解析到html的位置,所以它没获取到timer,你把js放在html后面就可以了,如下:

    <!DOCTYPE html>
    <html>
    <head>
       <title>浏览器对象</title>
       <meta charset="utf-8"/>
       <meta http-equiv="Content-Type" content="text/html; charset=gkb"/>


    </head>

    <body>
    <!--先编写好网页布局-->
    <h1>操作成功</h1>
    <span id="timer">5</span>
    <span>秒后回到主页</span>
    <a href="javascript:back();">返回</a>


    </body>
    <script type="text/javascript">

       //获取显示秒数的元素,通过定时器来更改秒数。
       var num=document.getElementById("timer").innerHTML;
       function count(){
           num--;
           document.getElementById("timer").innerHTML=num;
           if(num==0){
               window.location.assign("http://www.imooc.com");
           }
       }
       setInterval("count()",1000);
       //通过window的location和history对象来控制网页的跳转。
       function back(){
           window.history.go(-1);
       }
    </script>
    </html>

  • IT李小贱
    2016-07-14 14:52:35

    这个跟你的代码没什么关系,你拿到自己的编辑器上打开就可以正常运行了,2楼的说法不敢苟同,变量的位置决定的是它的作用域,在这里把timer当做全局变量是可以的,它不影响程序的正常运行

  • 大娟
    2016-07-14 14:27:20

    把 var num=document.getElementById("timer").innerHTML;这行代码放到function(){}里面 

    要执行这个方法,把变量定义在方法内

  • 王浩012345
    2016-07-14 14:25:40

    把setInterval("count()",1000);放在函数内,跟在if语句的后面,应该就可以了