0

可能重复:
Javascript:如何打开一个页面然后等待几秒钟在同一窗口中打开另一个页面

我试图将 html 中的所有链接加载到同一个窗口。然而,只有第一个链接被加载。我收到一条错误消息,提示 Chrome 中的网页未定义。有人可以帮助我,因为我是 Javascript 的新手。谢谢。代码如下:

<!DOCTYPE html>
<html>
<head>
<script>

window.onload=function(){myFunction()};

function myFunction()
{
var links = document.links;

mywin=window.open("","mywindow");
mywin.location=links[0];
for(var i = 1; i < links.length; i++)
{
    setTimeout(function(){mywin.location=links[i];},5000);
} 
}

</script>
</head>
<body>
<h1><a href="http://www.yahoo.com">yahoo</a></h1>
<h1><a href="http://www.youtube.com">youtube</a></h1>
<h1><a href="http://www.google.com">google</a></h1>
</body>
</html
4

2 回答 2

0

尝试这个:

function myFunction()
{
    var links = document.links;

    function open(win, i) {
        setTimeout(function() {
            win.location = links[i];
            if(i+1 < links.length) {
                open(win, i+1);
            }
        }, 5000);
    }

    mywin=window.open("","mywindow");
    mywin.location=links[0];
    open(mywin, 1);
}

如果你想在open外面写,myFunction你也需要links作为第三个参数传递。

编辑:可能你不会mywin在任何地方初始化变量。放在var它前面,否则会污染物window体。

于 2012-10-30T08:23:45.197 回答
0

您没有间隔打开页面。for 循环将快速连续运行 setTimeout,内容将在 5 秒后快速连续运行。For 循环将非常快地循环,每个循环之间可能需要几毫秒。因此 setTimeout 中的函数将在 5 秒后开始触发,但每次调用之间只有几毫秒。

其次,在您的情况下,循环最终将 i 增加到 3。当函数被实际调用时。

mywin.location=links[i];

i 实际上是 3,导致未定义。

于 2012-10-30T08:13:52.707 回答