2011-07-07 39 views
0

我一直試圖解決這個腳本超過一個小時,仍然無法讓它工作。它是一個在setInterval中執行動畫和html jquery事件的循環。setInterval問題(js)

這裏是小提琴:http://jsfiddle.net/GNrL3/

下面是代碼(與小提琴,但有些人喜歡有它在這裏):

$(document).ready(function() { 

var i = 1; 
var startinterval = 0; 

$('#clickhere').click(function() { 
    startinterval = setInterval("curvalues()", 1000); 
}); 

function curvalues() { 
    if ($i == 20) { 
     clearInterval(startinterval); 
    } 
    else { 
     $("#square").animate({ 
      "left": "+=30px" 
     }, "slow"); 
     $("#text").html("Barracks"); 
     $i++; 
    } 
} 

}); 

<div id="square" style="position:absolute;height:30px;width:30px;background-color:#F07014;"></div> 
<br /><br /><br /><br /><br /> 
<div id="text" style="height:30px;width:100px;border:1px solid #000">Text box</div> 
<br /><br /> 
<input type="button" value="Start" id="clickhere"/> 

我的信念是,這個問題涉及功能的setInterval ,但仍然,語法似乎對我很好...

回答

2

改變這一行:

startinterval = setInterval("curvalues()", 1000); 

要這樣:

startinterval = setInterval(curvalues, 1000); 

或者這樣:

startinterval = setInterval(function() { curvalues(); callSomethingElse(); }, 1000); 

並獲得的i前擺脫$的。這是沒有必要的。

+0

感謝您的快速響應! –

+0

順便說一句,你有任何想法,如果有一種方法來暫停/恢復功能,或者這是不可能的嗎? –

+0

停止什麼'setInterval'開始調用'clearInterval(startinterval);'。雖然我認爲「startinterval」在這種情況下是變量的錯誤名稱,我會將其更改爲「timer」或「interval」。 – Kon

3

您有一個函數範圍的問題。取而代之的是:您又多了一個錯誤

setInterval(curvalues, 1000); 

編輯:

setInterval("curvalues()", 1000); 

做到這一點。您的計數器變量名稱錯誤。應該聲明如下:

var $i = 1; //You missed the '$' 

(或引用您的所有VAR提供i代替$i

我更新了你的小提琴:http://jsfiddle.net/GNrL3/1/和現在的工作。

希望這會有所幫助。乾杯

+0

謝謝!我每天都在不斷學習!當你在那裏,你有任何想法,如果有一種方法來暫停/恢復功能或這是不可能的? –

+0

@Edgar我知道,但我只想暫停它,並在暫停的地方重新開始(不是從一開始) –