1

ここではまったくの初心者です。setInterval を使用してリストをフィルタリングし、各リスト項目に 2 秒ごとにクラスを追加/削除するスクリプトがあります。

各 setInterval ループに異なる時間を適用できるように、このスクリプトを編集するにはどうすればよいですか?

例: 最初のリスト項目については、setInterval (または遅延) を 3 秒に、2 番目のリスト項目は 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);
4

2 に答える 2

2

非常に原始的な例ですが、方法論を示すだけです:

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);
于 2011-02-10T05:26:23.983 に答える
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);
于 2011-02-10T05:25:53.550 に答える