setInterval问题(js)

时间:2011-07-07 03:58:54

标签: javascript jquery setinterval

我一直在尝试修复此脚本超过一个小时但仍无法使其工作。它是一个在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,但是,语法对我来说似乎很好......

2 个答案:

答案 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。没有必要这样做。