我有一个名为jarray的数组,我想显示数组的内容,顺序迭代从第3个元素到第6个最后一个元素,我想要显示数组的第一个单元格的时间是1秒,我试过了下面的代码,但只显示数组的第一个元素,请参阅下面的代码:
$(function() {
var refreshId = setInterval(function(){
for(var i=3;i<=jarray.length-5;i++){
var r = (-0.5)+(Math.random()*(1000.99));
$("p").text(jarray[i]);
}
}, 1000);
});
html:
<p> Content not loaded yet </p>
答案 0 :(得分:0)
你的整个for循环都在每秒执行的函数中。所以整个循环每秒执行一次,你总是看到它插入的最后一个元素。
将上面的所有代码更改为:
$(function(){
var i = 3;
(function insertArray(){
$("p").text(jarray[i++]);
if(i < jarray.length-5)
setTimeout(insertArray, 1000);
})();
});
答案 1 :(得分:0)
试试这个:
var arrayCount = 0;
var intervalId = null;
$(function() {
intervalId = setInterval(function(){
if(arrayCount == jarray.length){
clearInterval(intervalId);
return;
}
$("p").text(jarray[arrayCount++]);
}, 1000);
});
答案 2 :(得分:-2)
尝试使用闭包......当然要确保先前已正确定义了jarray。
$(function() {
var refreshId = setInterval(function(){
for(var i=3;i<=jarray.length-5;i++){
(function() {
var r = (-0.5)+(Math.random()*(1000.99));
jarrayi = jarray[i];
$("p").text(jarrayi);
}());
}
}, 1000);
});