проблема setInterval (js) - PullRequest
0 голосов
/ 07 июля 2011

Я пытался исправить этот сценарий более часа и до сих пор не могу заставить его работать.Это цикл, выполняющий события animate и html jquery в setInterval.

Вот скрипка: 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 ]

3 голосов
/ 07 июля 2011

У вас проблема с областью действия.Вместо этого:

setInterval("curvalues()", 1000);

сделать это:

setInterval(curvalues, 1000);

РЕДАКТИРОВАТЬ У вас есть еще одна ошибка.Ваша переменная-счетчик имеет неправильное имя.Он должен быть объявлен следующим образом:

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

(или ссылаться на все ваши переменные с i вместо $i)

Я обновил вашу скрипку: http://jsfiddle.net/GNrL3/1/ итеперь это работает.

Надеюсь, это поможет.Приветствия

2 голосов
/ 07 июля 2011

Изменить эту строку:

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

К этому:

startinterval = setInterval(curvalues, 1000);

Или это:

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

И избавьтесь от $ перед i. В этом нет необходимости.

...