Javascript 设置Internet Explorer超时

Javascript 设置Internet Explorer超时,javascript,internet-explorer,settimeout,Javascript,Internet Explorer,Settimeout,我在MSIE中有以下javascript: setTimeout(myFunction, 1000, param ); 这似乎适用于除internet explorer之外的所有浏览器。参数只是没有被转发到函数。查看调试器时,调试器未定义。param在Internet explorer中指定myFunction中的代码是JScript、JavaScript还是VBscript另请参见:。它的行为与其他浏览器不同 以下工作将起作用: setTimeout(function() { myF

我在MSIE中有以下javascript:

setTimeout(myFunction, 1000, param );

这似乎适用于除internet explorer之外的所有浏览器。参数只是没有被转发到函数。查看调试器时,调试器未定义。

param
在Internet explorer中指定
myFunction
中的代码是JScript、JavaScript还是VBscript另请参见:。它的行为与其他浏览器不同

以下工作将起作用:

setTimeout(function() {
    myFunction(param);
}, 1000);
前一行没有完全模仿Firefox中的
setTimeout
。要传递一个变量,不受以后更新
param
变量的影响,请使用:

setTimeout( (function(param) {
    return function() {
        myFunction(param);
    };
})(param) , 1000);

Internet Explorer不允许您这样传递参数。您必须从回调函数显式执行此操作:

setTimeout(function(){
    myFunction(param);
}, 1000);
setTimeout(function() { myFunction(param) }, 1000);

引自:

请注意,在Internet Explorer中,以第一种语法向函数传递附加参数不起作用


这不是一个参数。显然,最后一个参数表示脚本语言

改用匿名函数:

setTimeout(function() {
  myFunction(param);
}, 1000);

使用匿名函数:

setTimeout(function(){
    myFunction(param);
}, 1000);
setTimeout(function() { myFunction(param) }, 1000);
这个怎么样:

setTimeout(function(){
    myFunction(param);
}, 1000);
您可以使用闭包:

setTimeout(function(){myFunction(param)}, 1000);
看看

看起来你需要这样的东西:

setTimeout(function(){ myFunction(param) }, 1000);

只需使用匿名函数…@climp底部的
param
是原始
param
变量<顶部的code>param是自调用函数的局部变量<中间的code>param解析为顶部的
param
。谢谢!现在所有的浏览器似乎都能正常工作,只是一些后期处理工具,如jshint和google closure编译器抱怨这是无效的语法。但我想,这应该是另一个问题。我没有在or中单独看到任何关于代码片段的警告/错误。我必须指出,参数是这样的数组:[a,b]@clamp,这仍然不够。如果您真的想解决这个(有趣的?)问题,请毫不犹豫地发布一个新问题,包括相关代码以演示您的案例。