Мой код не работает в Firefox ...? - PullRequest
0 голосов
/ 15 июня 2011

У меня есть этот код, который, кажется, работает в Chrome и Safari (не уверен насчет оперы и т. Е. Просто не проверял ..), но в Firefox он по крайней мере не повторяет функцию воспроизведения, а просто запускается это однажды.

http://jsfiddle.net/ZL5XN/

HTML:

<div class="Start">Play</div><div class="Stop">Stop</div>
<br /><br />
<p>Lorem Ipsum Dolor Sit Amet...</p>

JS:

var myTimeOut, Stop, stop_flag;

$('.Start').click( function () {
    stop_flag = 0;
    Repeat();
});

$('.Stop').click( function () {
    clearTimeout(Stop);
    stop_flag = 1;
    $('p').show('slow');
});



function Repeat() {
    if(stop_flag == 1)
    {
        return;
    }
    else
    {
        $('p').show('slow').delay(400).hide('slow', function() {Stop = setTimeout(Repeat(), 1100)});
    }
}

Вопрос в том ... есть идеи, почему он не работает в Firefox

Ответы [ 3 ]

4 голосов
/ 15 июня 2011

Вы должны сказать:

Stop = setTimeout(Repeat, 1100);

Обратите внимание на пропущенные скобки.В данный момент вы говорите, чтобы она вызывала функцию , возвращаемую на Repeat(), чего, конечно, нет.

2 голосов
/ 15 июня 2011

Не уверен, почему Firefox является единственным, что подразумевает, но вы неправильно написали свой setTimeout.Должно быть:

$('p').show('slow').delay(400).hide('slow', function() {Stop = setTimeout(Repeat, 1100)});
1 голос
/ 15 июня 2011

Ваша проблема в этом

Изменение:

setTimeout (Repeat (), 1100)

Кому:

setTimeout ("Repeat ()", 1100) или setTimeout (Repeat, 1100)

Смотрите рабочий пример здесь: http://jsfiddle.net/ZL5XN/1/

...