Javascript setInterval time未获得正确的值
我有两个数组。一个是文件,另一个是时间,我想在iframe中显示它们。我在它们之间循环,文件显示正确,但时间始终设置为第一个元素 iframe始终加载10000毫秒。Javascript setInterval time未获得正确的值,javascript,jquery,Javascript,Jquery,我有两个数组。一个是文件,另一个是时间,我想在iframe中显示它们。我在它们之间循环,文件显示正确,但时间始终设置为第一个元素 iframe始终加载10000毫秒。 问题是因为您只定义了一个间隔,因此延迟总是相同的 要解决这个问题,您可以使用递归超时来代替,当上一个超时触发时定义下一个超时。试试这个: $(函数(){ var url=['/uploads/presentations/156837902.pdf'、'/uploads/presentations/156837925.mp4'、
问题是因为您只定义了一个间隔,因此延迟总是相同的 要解决这个问题,您可以使用递归超时来代替,当上一个超时触发时定义下一个超时。试试这个:
$(函数(){
var url=['/uploads/presentations/156837902.pdf'、'/uploads/presentations/156837925.mp4'、'/uploads/presentations/156837959.jpg'、'/uploads/presentations/156838138.docx'、'/uploads/presentations/156838215.ppt'];
var时间=[10000,40000,10000,20000,10000];
函数loadIframe(i=0){
$('iframe').attr('src',url[i%url.length]);
log(`Changing src to${url[i%url.length]}`);
setTimeout(函数(){
加载帧(++i);
},时间[i%时间长度];
}
loadIframe();
});代码>
这个问题是因为您只定义了一个间隔,因此延迟总是相同的
要解决这个问题,您可以使用递归超时来代替,当上一个超时触发时定义下一个超时。试试这个:
$(函数(){
var url=['/uploads/presentations/156837902.pdf'、'/uploads/presentations/156837925.mp4'、'/uploads/presentations/156837959.jpg'、'/uploads/presentations/156838138.docx'、'/uploads/presentations/156838215.ppt'];
var时间=[10000,40000,10000,20000,10000];
函数loadIframe(i=0){
$('iframe').attr('src',url[i%url.length]);
log(`Changing src to${url[i%url.length]}`);
setTimeout(函数(){
加载帧(++i);
},时间[i%时间长度];
}
loadIframe();
});代码>
这是因为您只调用了一次setInterval
,这就是传递延迟参数的时间。这是因为您只调用了一次setInterval
,这就是传递延迟参数的时间。
$(function() {
var urls = ['/uploads/presentations/1560837902.pdf', '/uploads/presentations/1560837925.mp4', '/uploads/presentations/1560837959.jpg', '/uploads/presentations/1560838138.docx', '/uploads/presentations/1560838215.ppt'];
var time = [10000, 40000, 10000, 20000, 10000];
var i = 0;
function loadIframe(url) {
$('#iframe').attr('src', url);
}
setInterval(function() {
// update the index
i = (i + 1) % urls.length;
loadIframe(urls[i]);
}, time[i]);
loadIframe(urls[i]);
});