我在MSIE中有以下javascript:
setTimeout(myFunction, 1000, param );
这似乎适用于除Internet Explorer之外的所有浏览器。 param只是没有转发到该函数。看看调试器,它是未定义的。
答案 0 :(得分:35)
param
指定myFunction
中的代码是JScript,JavaScript还是VBscript 另请参阅:MSDN 。它的行为与其他浏览器不同。
以下内容可行:
setTimeout(function() {
myFunction(param);
}, 1000);
上一行并不完全模仿Firefox等中的setTimeout
。要传递一个变量,不受以后更新param
变量的影响,请使用:
setTimeout( (function(param) {
return function() {
myFunction(param);
};
})(param) , 1000);
答案 1 :(得分:3)
Internet Explorer不允许您传递这样的参数。您必须从回调函数中明确地执行此操作:
setTimeout(function(){
myFunction(param);
}, 1000);
引自MDN:
请注意,在第一种语法中将其他参数传递给函数在Internet Explorer中不起作用。
答案 2 :(得分:1)
查看http://www.makemineatriple.com/2007/10/passing-parameters-to-a-function-called-with-settimeout
看起来你需要这样的东西:
setTimeout(function(){ myFunction(param) }, 1000);
答案 3 :(得分:0)
这不是参数。显然,最后一个参数表示脚本语言。
改为使用匿名函数:
setTimeout(function() {
myFunction(param);
}, 1000);
答案 4 :(得分:0)
使用匿名函数:
setTimeout(function() { myFunction(param) }, 1000);
答案 5 :(得分:0)
这个怎么样:
setTimeout(function(){
myFunction(param);
}, 1000);
答案 6 :(得分:0)
你可以使用闭包:
setTimeout(function(){myFunction(param)}, 1000);