2013-05-02 33 views
-1

如何設置超時只有1次循環?如何設置Timeout只有1次循環?

此代碼永遠循環,我只希望它只循環1次。

這是我的代碼:

<html> 
<head> 
<script language="JavaScript" type="text/javascript"> 
function doStuff() { 
    document.myform.submit(); 
} 
var myTimer = setTimeout(doStuff, 1000); 
</script> 
</head> 
<body> 
<form name="myform" action="" method="post"> 
</form> 
</body> 
</html> 
+0

使用clearTimeout()方法。 – karmafunk 2013-05-02 15:35:41

+6

提交頁面重新加載頁面以及所有的javascript,這將重新註冊'setTimeout'。 – jbabey 2013-05-02 15:35:45

+2

僅供參考,setTimeout _does_僅運行一次。你重新提交頁面的事實使得它處於無限循環。 – 2013-05-02 15:36:11

回答

1

每次提交表單時,頁面重新加載和setTimeout再次調用。

每次加載時都必須跟蹤頁面。例如:

sessionStorage.submitted = new Date().toString(); 

再檢查:

if (!sessionStorage.submitted) 
    var myTimer = setTimeout(doStuff, 1000); 

(注:它不IE7-工作)

順便說一句,什麼是在使用POST提交給點一個靜態的HTML頁面?也許有一些我們沒有看到的PHP代碼?

0

每當您的頁面發佈,然後加載,它再次調用setTimeout。這是你想要的功能嗎?

我想你可能需要做的是:

var myTimer = function(){setTimeout(doStuff, 1000)};