2011-08-10 27 views
3

IE8でjavascriptのsetTimeout関数を使用しているときに奇妙な問題に直面しています。 私はこのような「setTimeoutメソッド」関数を使用したい -IE8でsettimeout問題が発生する

setTimeout(timeout,2000, {name:'saarthak'}); 

    function timeout(opts) 
    {  
     alert('hello ' + opts.name); 
    } 

のsetTimeoutの三番目のパラメータは、私が呼び出し元の関数に渡す引数です。 FF、Chromeでは完璧に動作しますが、IE8では動作しません。

誰かが何か手がかりを持っていますか?これを達成するための回避策はありますか?

おかげ

+1

あなたは可能性があり*最初の構文の関数に追加のパラメータを渡すことはInternet Explorerでは機能しないことに注意してください* @https://developer.mozilla.org/en/window.setTimeout – KooiInc

答えて

11

は、おそらくそこにサポートされていないので、代わりにこれを持っている:

無名関数内から関数を呼び出す意味
window.setTimeout(function() { 
    timeout({name:'saarthak'}); 
},2000); 

を。あなたは、変数を変更してタイムアウトを呼び出したい場合は

+0

yup、thats私することができました。とにかくシャドウウィザードをありがとう。 :) – saarthak

3

あなたはIE8でも使用することができます(例えば、名前の多いループ内タイムアウトを呼び出す):

var names = ["saarthak", "saarthak2", "saarthak3"]; 
for (var q in names) { 
    setTimeout(
    (function(opts){ 
      return function(){ 
        alert ("hello " + opts.name)    
        } 
    })({name:names[q]}), 2000); 
} 

参照:http://jsfiddle.net/q4HYz/

関連する問題