为了账号安全,请及时绑定邮箱和手机立即绑定

为什么数字从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();

  }

   


正在回答

4 回答

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

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://img1.sycdn.imooc.com//57186e2f0001488604540247.jpg

1 回复 有任何疑惑可以回复我~

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

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

        setInterval(fun,1000);  //正确

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

0 回复 有任何疑惑可以回复我~
#1

天地一号217 提问者

var num=document.getElementById("seconds").innerHTML; //获取显示秒数的元素,通过定时器来更改秒数。 function count(){ num--; document.getElementById("seconds").innerHTML=num; if(num==0) { location.assign="http://www.imooc.com";} } setInterval("count()",1000); 改了后还是没跳转到网页,是还有什么问题吗?
2016-04-21 回复 有任何疑惑可以回复我~

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


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

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

0 回复 有任何疑惑可以回复我~
#1

天地一号217 提问者

var num=document.getElementById("seconds").innerHTML; //获取显示秒数的元素,通过定时器来更改秒数。 function count(){ num--; document.getElementById("seconds").innerHTML=num; if(num==0) { location.assign="http://www.imooc.com";} } setInterval("count()",1000); 改了后还是没跳转到网页,是还有什么问题吗?
2016-04-21 回复 有任何疑惑可以回复我~
#2

lqzh 回复 天地一号217 提问者

location.assign=XXX 是错的。 原因看之前的回复
2016-04-21 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

天地一号217 提问者

var num=document.getElementById("seconds").innerHTML; //获取显示秒数的元素,通过定时器来更改秒数。 function count(){ num--; document.getElementById("seconds").innerHTML=num; if(num==0) { location.assign="http://www.imooc.com";} } setInterval("count()",1000); 改了后还是没跳转到网页,是还有什么问题吗?
2016-04-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信