MSIEには次のJavaScriptがあります。
setTimeout(myFunction, 1000, param );
これは、Internet Explorerを除くすべてのブラウザーで機能するようです。パラメータは関数に転送されません。デバッガを見ると、未定義です。
Internet Explorerのparam
は、myFunction
のコードがJScript、JavaScript、またはVBscriptかどうかを指定します 参照: [〜#〜] msdn [〜#〜]。他のブラウザのようには動作しません。
以下が機能します:
setTimeout(function() {
myFunction(param);
}, 1000);
前の行は、FirefoxなどのsetTimeout
を正確に模倣したものではありません。param
変数に対する後の更新の影響を受けずに変数を渡すには、次を使用します。
setTimeout( (function(param) {
return function() {
myFunction(param);
};
})(param) , 1000);
Internet Explorerでは、そのようなパラメーターを渡すことはできません。コールバック関数から明示的に行う必要があります。
setTimeout(function(){
myFunction(param);
}, 1000);
[〜#〜] mdn [〜#〜] からの引用:
最初の構文で関数に追加のパラメーターを渡しても、Internet Explorerでは機能しないことに注意してください。
http://www.makemineatriple.com/2007/10/passing-parameters-to-a-function-called-with-settimeout をご覧ください。
次のようなものが必要になるようです:
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);