2014-04-05 19 views
1

在這裏,我想在發送時間做timout,但setTimeout()不使用tout作爲超時參數。 如何解決。在setTimeout()中使用一個變量來設置時間

<script language="JavaScript" type="text/javascript"> 
var tout=10*1000; 
var t = setTimeout(document.myform.submit(),tout)); 
</script> 
+0

[爲什麼這個setTimeout不工作]的可能重複(http://stackoverflow.com/questions/5116223/why-is-this-settimeout-not-working) –

回答

3
var tout = 10 * 1000; 
var t = setTimeout(function() { 
    document.myform.submit(); 
}, tout); 

閱讀關於如何正確使用here的setTimeout。第一個參數應該是一個函數引用,第二個超時以毫秒爲單位。

2
var delay = 60000; 

var timer = setTimeout(function() { 
    document.myform.submit(); 
}, delay); 

甚至更​​好

var delay = 10000, 
    f  = document.myform, 
    timer = setTimeout(f.submit.bind(f), delay); 

注:Function.prototype.bind取決於ES5。

0

您遇到的問題是您在setTimeout行調用submit函數,並將調用它的結果傳遞給setTimeout。

你想要做的是傳遞一個參考的功能的setTimeout:

var t = setTimeout(document.myform.submit, tout)); 

不幸的是這並不非常適合,因爲提交功能不知道什麼樣的形式,它被稱爲上。您還需要綁定上下文:

var t = setTimeout(document.myform.submit.bind(document.myform), tout)); 

Function.prototype.bind返回對函數的引用。

相關問題