Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:如何在几秒钟的时间间隔内将html中的所有链接一个接一个地加载到同一个窗口_Javascript - Fatal编程技术网

Javascript:如何在几秒钟的时间间隔内将html中的所有链接一个接一个地加载到同一个窗口

Javascript:如何在几秒钟的时间间隔内将html中的所有链接一个接一个地加载到同一个窗口,javascript,Javascript,可能重复: 我尝试将html中的所有链接加载到同一窗口。但是,只有第一个链接被加载。我收到一条错误消息说网页在Chrome中未定义。有人能帮我吗,因为我对Javascript还很陌生。谢谢代码如下: <!DOCTYPE html> <html> <head> <script> window.onload=function(){myFunction()}; function myFunction() { var links = document

可能重复:

我尝试将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

window.onload=function(){myFunction()};
函数myFunction()
{
var links=document.links;
mywin=window.open(“,“mywindow”);
mywin.location=links[0];
对于(变量i=1;i您没有按间隔打开页面。for循环将快速连续运行setTimeout,内容将在5秒后快速连续运行。For循环将以非常快的速度循环,每个循环之间可能需要几毫秒。因此setTimeout中的函数将在5秒后启动,但每次调用之间只有几毫秒

第二,在你的例子中,循环最后从i增加到3。当函数实际被调用时

mywin.location=links[i];
i实际上是3,这会导致未定义。

尝试以下方法:

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);
}
函数myFunction()
{
var links=document.links;
功能开放(win,i){
setTimeout(函数(){
win.location=links[i];
如果(i+1
如果要在
myFunction
之外编写
open
,还需要将
links
作为第三个参数传递

编辑:
而且您可能不会在任何地方初始化
mywin
变量。将
var
放在它前面,否则它会污染
窗口
对象。

非常感谢您,我尝试了一下,效果很好。不过,我尝试将链接作为第三个参数传递,并将open函数放在myFunction之外。它不起作用,但没问题。再次感谢谢谢你,非常感谢!