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之外。它不起作用,但没问题。再次感谢谢谢你,非常感谢!