2011-08-10 126 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

是的,那就是我設法做到了。無論如何感謝暗影精靈。 :) – 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/