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

可以解释一下为什么第一次跳转到负数时才跳转?

可以解释一下为什么第一次跳转到负数时才跳转?

慕粉1716012316 2017-03-02 18:18:35
<!DOCTYPE html><html> <head>  <title>浏览器对象</title>    <meta http-equiv="Content-Type" content="text/html; charset=gkb"/>    </head> <body>  <!--先编写好网页布局-->   <h1>操作成功</h1>  <span id="dd">5</span>  <span>秒后回到主页</span>  <a href="javascript:back();">返回</a>   <script type="text/javascript">     //获取显示秒数的元素,通过定时器来更改秒数。var num=document.getElementById("dd").innerHTML;function du(){        num=num-5;    document.getElementById("dd").innerHTML=num;    if(num==0)    {        location.assign("http://www.imooc.com");    }}    setInterval("du()",1000);   //通过window的location和history对象来控制网页的跳转。    function back()    {       window.history.back();   } </script> </body></html>
查看完整描述

1 回答

?
习惯受伤

TA贡献885条经验 获得超1144个赞

用下面这段代码代替:

<script type="text/javascript">
	//获取显示秒数的元素,通过定时器来更改秒数。
	var num = document.getElementById("dd").innerHTML;
	var handler = 0;
	function du() {
		num = parseInt(num) - 1; //这里,parseInt(num) 确保整数相减
		if(num == 0) {
			location.assign("http://www.imooc.com");
			clearInterval(handler); //清除定时器,不执行下边的显示秒数代码
			return;
		}
		document.getElementById("dd").innerHTML = num;				
	}
	handler = setInterval("du()", 1000);
</script>


查看完整回答
1 反对 回复 2017-03-02
  • 慕粉1716012316
    慕粉1716012316
    哥,num=num-1 表示每次减一,那我设定每次减5也应该可以吧?我想着是不是因为程序第一次运行需要一定时间,而我设定的一次减5时间过短,导致运行时间多余一秒,所以才会出现负数才跳转这种现象。要是不对的话,可以解释解释这种现象好吧。
  • 习惯受伤
    习惯受伤
    一样的,把我回复中的 num = parseInt(num) - 1; //这里,parseInt(num) 确保整数相减 这一句里边的-1改成-5就行了,能达到你的效果。至于原因是:你原来的代码是先调用document.getElementById("dd").innerHTML=num;,将num显示在页面上的时候,后台的定时器还在运行。这是逻辑问题,先要判断是否等于0,然后再显示在页面上,就不会出现这个问题了,不知道你明白没有。
  • 1 回答
  • 0 关注
  • 1207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信