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