Javascript setTimeout不适用于window.location?

Javascript setTimeout不适用于window.location?,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我试着在改变窗口位置时丰富flash效果,但有一个小问题,我无法解决 请看剧本 $(document).ready(function(){ $('a.flash').click(function(e) { e.preventDefault(); $('body').fadeOut(1500); setTimeout("", 1500); wi

我试着在改变窗口位置时丰富flash效果,但有一个小问题,我无法解决

请看剧本

 $(document).ready(function(){

            $('a.flash').click(function(e) {
                e.preventDefault();
                $('body').fadeOut(1500);
                setTimeout("", 1500);
                window.location=this.href;
            }); 
      });
window.location=this.href必须在1500毫秒后完成,但不会发生。 你能解释一下原因吗? 奇怪的是,当我试图写一些东西时;它可以正常工作,而不是window.location=this.href。你能解释一下原因吗

谢谢

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

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

setTimeout不等同于Thread.sleep1500;用其他语言。setTimeout计划一段代码在将来某个时候运行,并且不会阻塞。执行立即通过setTimeout调用并继续

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

有关使用setTimeout的适当方法,请参阅meder的答案,避免使用匿名函数进行计算。

setTimeout不等同于线程。sleep1500;用其他语言。setTimeout计划一段代码在将来某个时候运行,并且不会阻塞。执行立即通过setTimeout调用并继续

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


请参阅meder的答案,了解使用setTimeout的正确方法,避免使用匿名函数进行计算。

quotes=eval=badbad,使用lambdas代替setTimeOutWindow.location=this.href;,1500; 不行,我试过了。但我能理解逻辑,谢谢。但为什么我在写alert时它工作得很好???在该上下文中,这可能是一个窗口,而不是一个元素。你试过我的答案了吗?它有效,但不明白。href!所以它被重定向到未知页面。您是否像我的示例中那样将代码更改为el.href而不是this.href?您需要缓存href,因为您提供给setTimeout的上下文变为window而不是a.quotes=eval=badbad,请使用lambdas insteadsetTimeoutwindow.location=this.href;,1500; 不行,我试过了。但我能理解逻辑,谢谢。但为什么我在写alert时它工作得很好???在该上下文中,这可能是一个窗口,而不是一个元素。你试过我的答案了吗?它有效,但不明白。href!所以它被重定向到未知页面。您是否像我的示例中那样将代码更改为el.href而不是this.href?您需要缓存href,因为您提供给setTimeout的上下文变成了窗口而不是a。为什么在我编写alert时它会工作???在这种情况下,它休眠1500毫秒,然后发出警报。为什么?为什么我写alert的时候它能工作???在这种情况下,它休眠1500毫秒,然后发出警报。为什么?
$(document).ready(function(){

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