我一直在尝试修复此脚本超过一个小时但仍无法使其工作。它是一个在setInterval中执行animate和html jquery事件的循环。
这是小提琴: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,但是,语法对我来说似乎很好......
答案 0 :(得分:3)
您有功能范围问题。而不是:
setInterval("curvalues()", 1000);
这样做:
setInterval(curvalues, 1000);
编辑你还有一个错误。您的计数器变量名称错误。它应该像这样声明:
var $i = 1; //You missed the '$'
(或使用i
代替$i
)
我更新了你的小提琴:http://jsfiddle.net/GNrL3/1/,它现在有效。
希望这会有所帮助。干杯
答案 1 :(得分:2)
更改此行:
startinterval = setInterval("curvalues()", 1000);
对此:
startinterval = setInterval(curvalues, 1000);
或者这个:
startinterval = setInterval(function() { curvalues(); callSomethingElse(); }, 1000);
摆脱$
前面的i
。没有必要这样做。