javascript 404页面自定义重定向不成功

时间:2014-03-08 01:26:37

标签: javascript html

代码:

<html>
<body>

<a href="index.html">Click Here to Back to Home Page</a> Or Wait <p id="time" style="display:inline">Five</p> Seconds......
<script>
setTimeout(function(){document.getElementById('time').innerHTML="Four"},1000);
setTimeout(function(){document.getElementById('time').innerHTML="Three"},1000);
setTimeout(function(){document.getElementById('time').innerHTML="Two"},1000);
setTimeout(function(){document.getElementById('time').innerHTML="One"},1000);
setTimeout(function(){window.location.href="http://tool-box.weebly.com"}",1000);
</script>

</body>
</html>

不成功。我该怎么办?? 请帮忙。 THX。

3 个答案:

答案 0 :(得分:3)

setTimeout一次排队,所以你需要指定考虑的时间:

<html>
<body>

<a href="index.html">Click Here to Back to Home Page</a> Or Wait <p id="time" style="display:inline">Five Seconds</p>......
<script>
setTimeout(function(){document.getElementById('time').innerHTML="Four Seconds"},1000);
setTimeout(function(){document.getElementById('time').innerHTML="Three Seconds"},2000);
setTimeout(function(){document.getElementById('time').innerHTML="Two Seconds"},3000);
setTimeout(function(){document.getElementById('time').innerHTML="One Second"},4000);
setTimeout(function(){window.location.href="http://tool-box.weebly.com"},5000);
</script>

</body>
</html>

答案 1 :(得分:1)

您遇到的问题是setTimeout()是异步的。它会安排一些代码在将来的某个时间运行。编写代码的方式,看起来你希望setTimeout()暂停执行JavaScript直到发生超时,然后继续下一个语句。但是,它不会那样工作。您已经安排了将来要执行的5行代码,将来每1000毫秒。

要解决此问题,您可以将每个语句的超时时间增加到比前一个语句长1000毫秒。但是,所有冗余代码都不是很好。相反,我会使用递归函数每秒写一次数组元素,直到数组为空,然后重定向:

var countEl = document.getElementById("time");
var count = ["Five", "Four", "Three", "Two", "One"];
(function countDown() {
    if (count.length) {
        countEl.innerHTML = count.shift();
        setTimeout(countDown, 1000);
    }
    else {
        location.href = "http://tool-box.weebly.com";
    }
})();

答案 2 :(得分:1)

最后一行有一个语法错误,一个额外的引号字符:

setTimeout(function(){window.location.href="http://tool-box.weebly.com"}",1000);
// *******  you need to remove this character --------------------------^

修复将允许您的脚本“工作”,除了新页面仅在1秒后加载:对于倒计时,您需要为每个后续超时指定更长的间隔,否则它们将排在1000毫秒后排队该代码运行。 setTimeout()不暂停当前函数或睡眠的执行,它只是为了以后排队。因此,请在其他答案中指定1000,2000,3000等。