Javascript setTimeout和重新加载iFrame的问题

Javascript setTimeout和重新加载iFrame的问题,javascript,settimeout,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); }

我试图用不同的页面每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);
    }
} 
函数重载帧(nbr){
setTimeout(函数(){
document.getElementById(“iframe”).src=nbr+“.html”;
}, 2000);
}
函数重载(){

for(i=1;i
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);
    }
} 
函数重载帧(nbr){
setTimeout(函数(){
document.getElementById(“iframe”).src=nbr+“.html”;

},2000*i);//
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);
    }
} 
函数重载帧(nbr){
setTimeout(函数(){
document.getElementById(“iframe”).src=nbr+“.html”;

},2000*i);//您现在将重新加载延迟两秒。第1、2、3和4页实际上已加载,但很快被第5帧覆盖

使用
reloadiframe
中的
setTimeout
延迟下一次重新加载,使用
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);
}

您现在将重新加载延迟两秒。第1、2、3和4页实际上已加载,但很快会被第5帧覆盖

使用
reloadiframe
中的
setTimeout
延迟下一次重新加载,使用
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);
}

通过
setTimeout
传递额外参数在IE中不起作用。@MattBall:真的吗?即使在IE6之后的最新版本中?我只是传递了MDC所说的内容-我在Mac上,所以我自己无法测试。这太愚蠢了。看,即使在IE8>中它仍然不受支持setTimeout
在IE中不起作用。@MattBall:真的吗?即使是在IE6之后的最新版本中?我只是在传递MDC所说的-我在Mac上,所以我自己无法测试。这太愚蠢了。看看,即使在IE8>中它仍然不受支持