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

为什么数字从5跳到0后一直减到负数,不跳转网页

   <!--先编写好网页布局-->

   <h1> 操作成功</h1>

   <b id="seconds">5</b>

   <span>秒后返回主页</span>

   <a href="javascript:goback();">返回</a>

 

  <script type="text/javascript"> 

  var num=document.getElementById("seconds").innerHTML

  //获取显示秒数的元素,通过定时器来更改秒数。

  function count(){

      num--;

      document.getElementById("seconds").innerHTML=num;

      if(num==0) { location.assign="www.imooc.com";}

  } 

   setInterval(count(),100);

    //通过window的location和history对象来控制网页的跳转。

  function goback()

  {

      history.back();

  }

   


提问者:天地一号217 2016-04-16 20:54

个回答

  • qq_覗水翛_0
    2016-04-21 14:07:55

    哥们你这代码有几个问题:

    1、你的源码中<script>标签没有闭合;

    2、你的代码逻辑有问题,页面加载后会执行计时器,计时器会调用count函数,每过一秒页面调用一次,执行一次,而每次执行时num都会减1,所以会导致count一直减下去,然后再去判断num的值,你应该在调用count函数开始的时候就判断num是否为0,否则进行后面的操作,页面加载流程要搞清楚。附上改过的代码,可以运行。

    3、你没有认真看答案啊,都说了location.assign="http://www.imooc.com"这种写法是错误的,要写成location.assign(http://www.imooc.com)才对!!!http://img.mukewang.com/57186e2f0001488604540247.jpg

  • qq_覗水翛_0
    2016-04-17 00:30:39

          1、  setInterval("fun()",1000);//全局作用域下正常执行

            setInterval(fun(),1000); //调用函数正常,setInterval调用出错

            setInterval(fun,1000);  //正确

    2、打开新界面同2L,就像你用一个函数,xxx.(),是在()里面传参数,而不是写成xxx = ();

  • lqzh
    2016-04-16 22:16:53

    setInterval("count()",1000) 或者 setInterval(count,1000)


    location.assign是函数,不能直接赋值 而应该代入实参

    location.assign("http://www.imooc.com") 

  • ChenBugBug
    2016-04-16 22:00:38

    把这句setInterval(count(),100);
    改成:setInterval(count,1000);或setInterval("count()",1000);试试
    原因:之前介绍setInterval那一节提到:
    “交互时间:以毫秒计(1s=1000ms)。
    调用函数格式(假设有一个clock()函数):
    setInterval("clock()",1000)
    或setInterval(clock,1000) ”