2011-02-10 2 views
0

всего новичка здесь. У меня есть скрипт, который использует setInterval для фильтрации через список и добавляет/удаляет класс каждые 2 секунды для каждого элемента списка.Как применять несколько раз для setInterval петель

Как я могу отредактировать этот скрипт, чтобы я мог применять разные времена для каждого цикла setInterval?

Например: для первого элемента списка я хочу, чтобы setInterval (или задержка) составлял 3 секунды, второй элемент списка, который я хочу, чтобы он составлял 1,5 секунды и т. Д. И т. Д., Пока список не будет завершен ... Мне нужно, чтобы каждый цикл был настроен по-разному. Как это можно сделать? Ваша помощь очень признательна.

$(function() { 
var $list = $('#animation li'); 
    $list.filter(':first').addClass('go'); 

    setInterval(function() { 
     if($list.filter('.go').index() !== $list.length - 1) { 
     $list.filter('.go').removeClass('go').next().addClass('go'); 
     } 
    else { 
     $list.removeClass('go').filter(':first').addClass('go'); 
     } 
    }, 2000); 
+0

Это означает, что ваш пятый элемент, вы будете установки интервала для 0.09th секунды. Какова цель иметь затухающий интервал? Вы скоро закончите переполнение событий. – Joe

+0

Проделали некоторые математические упражнения, начиная с 3 секунд, чтобы ваша функция непрерывно стреляла в бесконечность. [Рассчитано по Вольфрам] (http://www.wolframalpha.com/input/?i=sum&a=*C.sum-_*Calculator.dflt-&f2=6/2#k&f=Sum.sumfunction_6/2#k&f3= 1 & f = Sum.sumlowerlimit_1 & f4 = infinity & f = Sum.sumupperlimit_infinity & a = * FVarOpt.1 -_ ** -. *** Sum.sumvariable ---. * -) – Joe

ответ

0

вызова setInterval в setInterval.

var intervalFunc = new function(){ 
    if($list.filter('.go').index() !== $list.length - 1) { 
    $list.filter('.go').removeClass('go').next().addClass('go'); 
    } 
else { 
    $list.removeClass('go').filter(':first').addClass('go'); 
    } 
    // Calculate the next time func 
    var timeout = ... 
    setInterval(intervalFunc, timeout); 
} 

setInterval(intervalFunc, 2000); 
+0

Вы имеете в виду 'setTimeout' правильно? –

+0

Привет, ребята Я здесь новичок. Я думаю, что setTimeout - это путь, я не уверен. Мне нужен сценарий jquery, который добавляет класс в элемент списка, а затем удаляет этот класс через заданное время. Он прогуливался примерно через 10 пунктов списка, каждый с другой задержкой времени. –

1

Очень примитивный пример, но только с указанием методики:

var $list = $('#animation li'); 
var worker = function(){ 
    // 
    // perform your process(es) 
    // 

    // only continue on if necessary 
    if (continue_working) 
    timer = setTimeout(worker, Math.random() * 5 * 1000); 
} 
var timer = setTimeout(worker, 2000); 

// to stop at any time 
clearTimeout(timer); 
+0

+1 работал над похожим ответом. setTimeout - путь. – Loktar

Смежные вопросы