jQuery: странные ошибки при вызовах setInterval… мой синтаксис неверен? - PullRequest
2 голосов
/ 16 ноября 2010

Я пытался выяснить это некоторое время, но теперь подумал, что просто опубликую это здесь и посмотрю, смогу ли я наконец понять эту проблему с setInterval У меня есть.

В случае, если это имеет значение, я использую jQuery 1.4.4 в этом документе.

Учитывая следующее:

var MS = {},
    MS.timer = 1200; // this both would be user accessible by the plugin

// if the timer option is set then activate slideshow
if ( MS.timer ) { setInterval( "go(2,'right')" , MS.timer); }

// show the slide (as defined by the pass ins)
function go(slideNumber, direction) {
    if ( !paused || !running ) { 
        console.log('run!'+', '+slideNumber+' , '+direction);
    }
}

Это, однако, приводит к:

go is not defined

Что «правильно» регистрируется каждые 1200 мс. Так как я могу запустить свою функцию go(), включая передачу значений для slideNumber, direction?

Ответы [ 3 ]

3 голосов
/ 16 ноября 2010

Попробуйте это:

if ( MS.timer ) { setInterval( function() { go(2,'right'); }, MS.timer); }

Не могу судить по тому, что вы написали, но я предполагаю, что этот код находится внутри какой-то функции.Функция "go" должна быть глобальной, чтобы это работало.Когда вы передаете только строку, интерпретатор оценивает это в глобальном контексте, когда срабатывает таймер.Используя реальную функцию, как в примере, который я предоставил, вы фиксируете этот локальный «go» в замыкании.

0 голосов
/ 16 ноября 2010

Попробуйте это:

window.setInterval(go, MS.timer, [2, 'right']);
0 голосов
/ 16 ноября 2010

Попробуйте:

setInterval(function() {
   go(2, 'right');
}, MS.timer);
...