Javascript 使用js/jquery循环遍历要加载到iframe中的html文件列表

Javascript 使用js/jquery循环遍历要加载到iframe中的html文件列表,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,我有一组HTML文件,我想通过iframe循环,但我不太确定如何设置javascript,因为我几乎没有使用它的经验。以下是我试图让这项工作发挥作用的尝试: <!DOCTYPE HTML> <html> <head> <meta charset = 'utf-8'> <title>Sankey Plot Test</title> <script type="text/javascript"

我有一组HTML文件,我想通过iframe循环,但我不太确定如何设置javascript,因为我几乎没有使用它的经验。以下是我试图让这项工作发挥作用的尝试:

<!DOCTYPE HTML>
<html>
  <head>
    <meta charset = 'utf-8'>
    <title>Sankey Plot Test</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
  </head>

  <body>
    <iframe src = "plot1.html" width = 100% height = 100% id = "sankey"></iframe>
    <script type = "text/javascript">
      (function() {
        var selector = document.getElementById('sankey'),
        var delay_sec = 1,
        var num = 0,
        var len = 2;
        setInterval(function() {
          num = (num === len) ? 0 : num;
          selector.src = "plot" + num + ".html";
          num++;
        }, delay_sec * 50);
      }());
    </script>
  </body>
</html>

桑基小区试验
(功能(){
var选择器=document.getElementById('sankey'),
var延迟_秒=1,
var num=0,
var-len=2;
setInterval(函数(){
num=(num==len)?0:num;
selector.src=“plot”+num+“.html”;
num++;
},延迟(第50节);
}());
上面的代码是通过我在SO上看到的其他答案随意拼凑在一起的。我认为这应该是一些简单的东西,比如(伪代码):


var计数器=0;
for(i=0,i<永恒,i++){
计数器++;
计数器=(计数器===2)?0:计数器;
var source=“绘图”+计数器+”.html”;
$(“#sankey”).load(来源);
睡眠(2秒);
}
我哪里做错了

次要问题与主要问题无关:为什么在我的第一段代码中,js代码中有逗号而不是分号

// You should also only do DOM manipulation after DOM ready and the
//   easiest way to do that is to pass a function directly to jQuery
//   like so
$(function() {
    // I'm just guessing you mean to use jQuery since you included it
    //  #sankeyis the CSS syntax for selecting an element with the
    //  ID 'sankey' and jQuery uses CSS syntax for selecting elements
    var selector = $('#sankey');
    var delay_sec = 10;
    var num = 0,
        len = 2;
    setInterval(function() {
        num = (num === len) ? 0 : num;
        //this is how you set an attribute on a jQuery selector
        selector.attr('src', "plot" + num + ".html");
        num++;
    //the second argument to setTimeout/setInterval is in milliseconds
    }, delay_sec * 1000);
});
您可以在JavaScript中以某种列表格式定义变量,如下所示:

var i = 0,
    j = 1, 
    k = 2;
这相当于:

var i = 0;
var j = 1;
var z = 2;
这是一个语法错误:

var i = 0, var j = 1;

那很有效,谢谢你!最后一个问题:为什么在关闭函数后必须添加第二组
()
?这会在函数创建后立即调用函数,您不必这样做,但这是一个常用的习惯用法,用于创建不会将值泄漏到全局作用域的作用域,这对于防止多个脚本相互践踏对方的变量非常重要。如果您熟悉其他具有该概念的语言,我喜欢将其视为一个名称空间。我真的很欣赏这种解释。这是否意味着只有在DOM就绪时才调用jquery?直接将函数传递给jquery只需要在函数前面传递jquery指示符
$
?$是jquery在全局范围内默认定义的函数$(function(){})将函数传递给该函数。然后,当DOMready事件触发时,jQ将调用该函数,这表示DOM已准备好进行操作(例如,更改iframe上的属性)。总是注册操作DOM的功能以这样运行更安全,但是将脚本块放在底部将产生大致相同的效果,因为页面的解析方式不同。
var i = 0, var j = 1;