проблема setInterval () в Mozilla (функция Javascript) - PullRequest
0 голосов
/ 02 марта 2012

Я использую JavaScript: полное руководство
Он предлагает следующий код для объяснения setTimeout () и setInterval (), и моя проблема в том, что он работает в Safari без проблем но в Mozilla это, кажется, не срабатывает вообще, у кого-то есть мысли? * * 1002

Проблема заключается в следующей функции:

function invoke(f,start,interval,end){
        if(!start) start=0; //default to 0ms (start right away)
        if (arguments.length <= 2)
            setTimeout(f,start);

Это работает, если я не устанавливаю инверсию и конец, но если я делаю что-то пошлое

    else{
        setTimeout(repeat,start);
        function repeat(){
        var h = setInterval(f,interval);
        //if(end)setTimeout(function(){clearInterval(h)},end);
        }
    }
    }

Это просто фиктивная функция, которая запускается в setTimeout () и setInterval ()

    function f(){
    if(true)
        alert("yo");
    }



<button onclick="invoke('f,200,1000,5000')">yo</button>

К счастью, Сомоне немного разбирается в этом, спасибо.

Ответы [ 3 ]

1 голос
/ 02 марта 2012
<button onclick="invoke('f,200,1000,5000')">yo</button>

должно быть

<button onclick="invoke(f,200,1000,5000)">yo</button>

В противном случае вы передаете строку 'f, 200,1000,5000' в качестве первого параметра.

0 голосов
/ 02 марта 2012

JSFiddle теперь это работает,

как уже говорили другие, вам нужно удалить arround вашего параметра, чтобы вызвать

также FireBug для Firefox (получите его, если вы этого еще не сделали), с Repeat не определен, поэтому я тоже немного его изменил.

0 голосов
/ 02 марта 2012

Похоже, вы передаете одну переменную в функцию invoke из-за размещения вашей второй одинарной кавычки.Попробуйте изменить его на

<button onclick="invoke('f',200,1000,5000)">yo</button>

и посмотрите, будет ли это работать лучше.

...