如何使用数组作为循环

时间:2012-04-20 19:02:05

标签: javascript html

嗯,解释我需要做什么有点难,但是:

我有一个包含21个字符串的数组,并且我有一个javascript函数,每3秒工作一次,如下所示:

function Ready(){
    t=setTimeout("change()",3000);
}
$(document).ready(function() {
    Ready();
});

我不知道该怎么做:我将如何每隔3秒更改一个div元素(称为“id1”),用数组中的新文本替换其文本,从1到21然后再返回又一次?

3 个答案:

答案 0 :(得分:2)

这使用了一种称为“匿名函数”的东西,它取代了你的问题中的“change()”。这是使用setTimeout的正确方法。

var arrPtr = 0;  // <-- this is the array pointer varialble.
vat txtArr = "a,b,c,d".split(",") //<-- this contains your string array

function Ready() {
   t=setTimeout(function(){
       $('#id1').html(txtArr[arrPtr]); //<-- this puts the value or the arrayat position "arrPtr" into your page
       arrPtr++; // <-- this increments the position to the next element
       if(arrPtr>txtArr.length) {
          arrPtr = 0;  // <--- this resets the position to zero when it gets to the end of the array
       }  
   },3000);
}

答案 1 :(得分:1)

var str = ["Hello", "World"];
var changeInterval = null;
var changeIteration = 0;
var change = function(){
   $('#id1').text(str[changeIteration++ % str.length]);
}

$(document).ready(function(){
    change();
    changeInterval = setInterval(change,3000);
});

JS Fiddle

答案 2 :(得分:0)

试试这个:

$(document).ready(function() {
    var myStrings = ["string 1", "string 2", "string 3"];
    var interval = setInterval(changeValue, 3000);
    var index = 0;

    function changeValue() {
        var idx = (index + myStrings.length) % myStrings.length;
        document.getElementById("id1").innerHTML = myStrings[idx];
        index++;
    }
});

Example fiddle