-4

好吧,解释我需要做什么有点困难,但是:

我有一个由 21 个字符串组成的数组,并且我有一个每 3 秒运行一次的 javascript 函数,如下所示:

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

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

4

3 回答 3

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);
}
于 2012-04-20T19:06:32.043 回答
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小提琴

于 2012-04-20T19:06:01.503 回答
0

Try this:

$(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

于 2012-04-20T19:09:37.500 回答