setTimeout不能与window.location一起使用?

时间:2010-06-13 17:42:46

标签: javascript jquery settimeout

我在改变窗口位置时尝试丰富闪光效果,但是有一个小问题,我无法解决。

请看脚本

 $(document).ready(function(){

            $('a.flash').click(function(e) {
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout("", 1500);
                window.location=this.href;
            }); 
      });

window.location=this.href必须在1500毫秒后完成,但不会发生。 你能解释一下原因吗? 有什么奇怪的,当我尝试写alert("something");而不是window.location=this.href时,它运行正常。你能解释一下原因吗?

由于

2 个答案:

答案 0 :(得分:7)

$(document).ready(function(){

            $('a.flash').click(function(e) {
                var el = this;
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout( function() {  location=el.href }, 1500 );
            }); 
      });

你应该提供一个回调函数作为setTimeout的第一个参数,它在1500毫秒后被调用。

答案 1 :(得分:3)

setTimeout 等同于其他语言中的Thread.sleep(1500);setTimeout计划在将来的某个时间运行并且不阻止的代码。执行立即通过setTimeout电话并继续。

第一个参数是对函数的引用或将要计算的字符串。

请参阅meder的答案,了解使用setTimeout的适当方法,避免使用匿名函数进行评估。