今天偶然发现的问题,这是我最初写的代码,目的是实现倒计时结束后跳转网页。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Javascript练习</title>
<style type="text/css">
p{
text-align: center;
}
#time{
color: red;
}
</style>
</head>
<body>
<p><span id="time">5</span>秒后自动跳转</p>
<script type="text/javascript">
var number = 5;
var now;
function timedown(){
number --;
if(0 >= number){
location.href = "https://www.baidu.com/";
}else{
now = document.getElementById("time");
now.innerHTML = number + "";
}
}
setInterval(timedown,1000);
</script>
</body>
</html>
出问题的是这段中的else,如果将设置标签内容的代码用else包裹,则会使页面重新加载,不会跳转到指定网站
function timedown(){
number --;
if(0 >= number){
location.href = "https://www.baidu.com/";
}else{
now = document.getElementById("time");
now.innerHTML = number + "";
}
}
setInterval(timedown,1000);
如果不加else,页面在倒计时结束后会正常跳转至百度,代码如下所示
function timedown(){
number --;
if(0 >= number){
location.href = "https://www.baidu.com/";
}
now = document.getElementById("time");
now.innerHTML = number + "";
}
setInterval(timedown,1000);
这里的else加与不加有什么区别吗,为什么会出现重新加载页面的现象呢?
非初学者,无需科普else的用法。
问题补充:
使用F12打断点调试的话是可以跳转的,取消断点就会出现上述问题。
浏览器使用的是火狐浏览器。
补充2.0:
这个现象复现的话可能有些困难,我本人机器也不是百分之百可以复现的。
大家无法复现的话,根据代码提供一个理论或者思路也可以。
补充3.0:
这个现象也许只在火狐浏览器中存在,我试了edge和ie都可以正常跳转