-2

選択したdivを10秒ごとに変更するインターバル機能を作ろうとしています。最初のページにいるときは最初の配列の項目を表示し、2 番目のページにあるときは配列 2 などを表示します。

var timedFunc = '';
var index= new Array(20)
index[0]="index1";
index[1]="index2.";
..

var indextwo= new Array(20)
indextwo[0]="index1";
indextwo[1]="index2";

var tmp = 0;
function display_index(nameofarray) {
if (tmp < 0) { tmp = nameofarray.length-1; }
if (tmp > nameofarray.length-1) { return false; }
document.getElementById('robot').innerHTML = nameofarray[tmp];
tmp = tmp + 1;
}
function indexInterval(m) {
  switch(m) {
    case 1: timeFunc = setInterval("display_index(index)",1000);
    case 2: timeFunc = setInterval("display_index(indextwo)",1000);
    case 3: timeFunc = setInterval("display_index(indexthree)",1000);
    case 4: timeFunc = setInterval("display_index(indexfour)",1000);
  }
}
4

1 に答える 1

1

インターバル タイマーで配列を循環するには、目的の配列を関数に渡し、その関数を使用して、次のようにインターバル タイマーで配列を循環します。

var index0 = ["text1", "text2", "text3"];
var index1 = ["text1", "text2", "text3"];

function startMyInterval(array) {
    var index = 0;
    var item = document.getElementById('robot');
    setInterval(function() {
        // if we reached the end of the array, start back at beginning
        if (index >= array.length) {
            index = 0;
        }
        item.innerHTML = array[index]; 
        ++index;
    }, 10000);
}

// figure out which array of text values you want to use
// for this particular page index0 or index1
// and pass that array to startMyInterval()
startMyInterval(x);

このタイプの実装は、switchステートメントを回避し、テキストを に渡すことを回避しますsetInterval()。また、関数クロージャーを使用して、コールバックが必要とする状態を追跡しsetInterval()ます。

于 2012-06-09T18:34:46.937 に答える