setTimeout和重新加载iframe的问题

时间:2011-09-21 20:20:55

标签: javascript settimeout

我试图用不同的页面每隔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);
    }
} 

2 个答案:

答案 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);
}