我试图用不同的页面每隔2秒更改一次iframe的src,但到目前为止我失败了。谁能告诉我这段代码有什么问题?它只加载最后一个文件,5.html而不是其他文件,1.html 2.html 3.html和4.html
function reloadiframe(nbr) {
setTimeout(function () {
document.getElementById("iframe").src = nbr + ".html";
}, 2000);
}
function reload() {
for (i=1;i<=5;i++) {
reloadiframe(i);
}
}
答案 0 :(得分:2)
setTimeout
不等待。所有超时几乎同时发生,因为它们都是在几乎完全相同的时间开始的。只需稍加改动即可解决问题:
function reloadiframe(nbr) {
setTimeout(function () {
document.getElementById("iframe").src = nbr + ".html";
}, 2000*i); // <== right here
}
function reload() {
for (i=1;i<=5;i++) {
reloadiframe(i);
}
}
答案 1 :(得分:2)
你现在推迟重新加载两秒钟。第1,2,3和4页实际上已加载,但很快被第5帧覆盖。
使用setTimeout
中的reloadiframe
延迟下次重新加载,使用setInterval
定期重新加载iframe或增加超时:
function reloadiframe(nbr) {
document.getElementById("iframe").src = nbr + ".html";
if (n <= 5) {
setTimeout(function () {
reloadiframe(nbr + 1);
}, 2000);
}
}
function reload() {
setTimeout(function () {
reloadiframe(i);
}, 2000);
}
替代使用setInterval
:
var timer, nbr;
function reloadiframe() {
document.getElementById("iframe").src = nbr + ".html";
if (nbr > 5) {
clearInterval(timer);
}
}
function reload() {
nbr = 1;
timer = setInterval(reloadiframe, 2000);
}