2011-07-07 41 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我知道,但我只想暂停它,并在暂停的地方重新开始(不是从一开始) –