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

i==0后页面应该就直接跳转了,但还是会执行之后的语句,在页面显示”0秒“(加上else才可以避免),这是什么原因呢?

<!DOCTYPE html>

<html>

<head>

  <title>浏览器对象</title>  

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>   

</head>

<body>

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

  <h1>操作成功</h1>

  <p>

    <span id="timer">5</span>秒后返回主页<a href=window.history.back()>返回</a>

  </p>

  <script type="text/javascript">  

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

       var i = document.getElementById("timer").innerHTML;

       var t=0;

       function setTimer()

       {

          i--;

          if(i==0){

             clearInterval(t);

             window.location.replace("http://www.imooc.com/");

          }

          //else{

          document.getElementById("timer").innerHTML=i;

          //}


       }

       t = setInterval(setTimer,1000);

       

 </script> 

</body>

</html>

正在回答

6 回答

你不要只在DM中的实时实图中去看,它不能按每个浏览器的代码执行的。你要用不同浏览器去试才看的出的。

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

我试了一下,我这边没加else时,document.getElementById("timer").innerHTML值不变,也就是<span>里的值一直就是5不变,加了else时,<span>的值才变,也就是你说的不会显示0,显示1后就跳了。并且你要注意这个i是个外部变量,document.getElementById("timer").innerHTML值不变,i的值不变的。所以要加else去给<span>赋值

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

没有else 时   ,最后i=0时会执行一次“document.getElementById("timer").innerHTML=i;”,页面会显示0;加上else后,当i=0时就不会显示0了

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

我明白你的意思了,当你没写else的时候,无论if条件是否成立,一定都会执行一次“document.getElementById("timer").innerHTML=i;”,如果你写了else,当if条件成立时(i==0),是不会执行else中的语句,自然页面也就显示不出0了,最后一次执行“document.getElementById("timer").innerHTML=i;”是当i==1的那一次

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

for(var i=5; i>0; i--){

if(i==3){window.location.replace("http://www.imooc.com/");}

alert(i);

}



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

我用firefox运行,有无else显示效果都是倒数5秒后跳转到慕课网,没有问题啊

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

举报

0/150
提交
取消

i==0后页面应该就直接跳转了,但还是会执行之后的语句,在页面显示”0秒“(加上else才可以避免),这是什么原因呢?

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