Javascript 使用js/jquery循环遍历要加载到iframe中的html文件列表
我有一组HTML文件,我想通过iframe循环,但我不太确定如何设置javascript,因为我几乎没有使用它的经验。以下是我试图让这项工作发挥作用的尝试: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"
<!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;