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

读秒递减问题?

看我注释处的问题:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<b id="num1"></b><a>秒后返回主页</a>
<!--为什么当b标签内没有写数字5时,在浏览器中显示的效果就是在读秒读到2的时候就直接跳转页面呢?难道是说,num赋值给“num1”是有一秒的传递时间?-->
<script type="text/javascript">
   var num=5;
  function timer(){
	  
	  document.getElementById("num1").innerHTML=num;
	  num--;
	  if(num==1){
		  window.location.assign("http://www.imooc.com");
		 // window.location="http://www.imooc.com"
		  }
	  }
     setInterval("timer()",1000)
</script>
</body>
</html>


提问者:慕村1994845 2016-11-14 21:57

个回答

  • 梦想的偏执狂
    2016-11-29 15:30:27

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">


    <head>

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

    <title>无标题文档</title>

    </head>


    <body>

    <b id="num1"></b>

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

    <!--为什么当b标签内没有写数字5时,在浏览器中显示的效果就是在读秒读到2的时候就直接跳转页面呢?难道是说,num赋值给“num1”是有一秒的传递时间?-->

    <script type="text/javascript">

    var num = 5;

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


    function timer() {

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

    //这里的if我进行了修改,把num的判定时间减少了一秒,这样意味着时间走到零才跳转

    if(num == 0) {

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

    }

    //这里是修改的第二个地方,把num--的位置进行了调整,因为整个跳转思想是:判定时间是否到了

    //if(time==0){跳转}else{不跳转},所以把判定时间的num放到最后来递减

    num--;

    }

    setInterval("timer()", 1000)

    </script>

    </body>


    </html>


  • favour_jagger
    2016-11-14 22:50:01

    不是的,当你的num是2的时候打印出来在id为num1的标签上时便会执行num--,此时num变成1,所以直接满足if的判定语句,直接跳转页面。如果你想要跳出数字1,可以将num--;这个语句放在if语句后面便可以看到数字1的时候才会自动跳转