Javascript 使用jquery的增量变量

Javascript 使用jquery的增量变量,javascript,jquery,Javascript,Jquery,我觉得这是一件非常基本的事情,但我似乎找不到解决办法。我试图在加载IFRAME后增加一个值 代码如下所示: var x=0; $(document).ready(function() { $('#iframe-2').load(function() { var x=x+1; }); $('#iframe-3').load(function() { var x=x+1;

我觉得这是一件非常基本的事情,但我似乎找不到解决办法。我试图在加载IFRAME后增加一个值

代码如下所示:

var x=0;
$(document).ready(function() {
        $('#iframe-2').load(function() {
            var x=x+1;        
        });
        $('#iframe-3').load(function() {
            var x=x+1;    
        });
        $('#iframe-4').load(function() {
            var x=x+1;        
        });
        $('#iframe-5').load(function() {
            var x=x+1;        
        });
    });
我想做的是提供一些加载的iframe,当iframe完成加载时更新这些iframe。当前的输出代码如下所示:

<script language="javascript">
document.write(x + " Results");
</script>

文件。填写(x+“结果”);
非常感谢您的帮助

你应该改变

var x = x+1;


因为
var
关键字在每次
加载时都会创建一个新变量,所以全局变量
x
不会得到更新/增加。

您在加载回调函数中声明了局部变量,因此它不会增加全局变量
x
,您可以在dom就绪回调函数内部声明
var x
,并在加载回调函数中使用它

$(document).ready(function() {
    var x = 0;
    $('#iframe-2').load(function() {
        x++;        
    });
    $('#iframe-3').load(function() {
        x++;
    });
    $('#iframe-4').load(function() {
        x++;  
    });
    $('#iframe-5').load(function() {
        x++;  
    });
});
编辑: 在此之后,
document.write(x+“结果”)仍然无法工作,因为它在加载iframe之前执行。您需要异步执行检查

这里是

$(document).ready(function() {
    var x = 0;
    $('iframe').load(function() {
        x++;        
    });
    var time_id = setInterval(function() {
      $('#count').text(x);
      if (x === $('iframe').length) {
        clearInterval(time_id);
      }
    }, 200);
});​
html:

<iframe  src="http://www.w3schools.com"></iframe>
<iframe  src="http://www.w3schools.com"></iframe>
<iframe  src="http://www.w3schools.com"></iframe>
<iframe  src="http://www.w3schools.com"></iframe>
<hr>
Loaded iframe count: <span id="count">0<span>


加载的iframe计数:0
Javascript具有“函数范围”-变量仅存在于创建它们的函数中。因此有可能有几个不同的变量名为
x
,当且仅当它们在不同的函数中时(这里就是这种情况)

变量是使用
var
关键字创建的,访问时不使用关键字。因此,
var x=10
创建一个名为
x
的变量,并且
x=10
修改名为
x
的现有变量

在代码中,每个函数调用
var x=10。由于先前定义的
x
是在外部函数中定义的,因此该行是有效的,并创建了一个名为
x
的新变量,其作用域为所调用的函数。如果省略
var
语句,解释器将首先查看当前函数的名称空间,而不会找到
x
。然后它会向上移动到全局范围,找到您已经声明的
x
,并使用它

简而言之,除第1行外,在每一行中省略单词
var

var x = 0;
$(document).ready(function () {
    $('#iframe-2').load(function () {
        x = x + 1;
    });
    $('#iframe-3').load(function () {
        x = x + 1;
    });
    $('#iframe-4').load(function () {
        x = x + 1;
    });
    $('#iframe-5').load(function () {
        x = x + 1;
    });
});

使用jQuery进行上述查询的另一个alter解决方案是

HTML:

<div id="top"></div>
<iframe  src="http://jquery.com/"></iframe>
<iframe  src="http://jquery.com/"></iframe>
<iframe  src="http://jquery.com/"></iframe>
<iframe  src="http://jquery.com/"></iframe>
<div id="bottom"></div>

JQuery:

var x = 0;
$(function() {
    $('iframe:eq(0)').load(function() {
        x = x + 1;
        result(x);
    });
    $('iframe:eq(1)').load(function() {
        x = x + 1;
        result(x);
    });
    $('iframe:eq(2)').load(function() {
        x = x + 1;
        result(x);
    });
    $('iframe:eq(3)').load(function() {
        x = x + 1;
        result(x);
    });

});

function result(x) {
    if (x == null || typeof(x) == "undefined") x = 0;
    $("#top").html("<div>Loaded iframe count: " + x + "</div><hr/>");
    $("#bottom").html("<hr/><div>Loaded iframe count: " + x + "</div>");
}
var x=0;
$(函数(){
$('iframe:eq(0)')。加载(函数(){
x=x+1;
结果(x);
});
$('iframe:eq(1)')。加载(函数(){
x=x+1;
结果(x);
});
$('iframe:eq(2)')。加载(函数(){
x=x+1;
结果(x);
});
$('iframe:eq(3)')。加载(函数(){
x=x+1;
结果(x);
});
});
函数结果(x){
如果(x==null | | typeof(x)=“未定义”)x=0;
$(“#top”).html(“加载的iframe计数:“+x+”
”; $(“#底部”).html(“
加载的iframe计数:“+x+”); }

也尝试一下codebins

我终于想出了一个非常简单的解决方案:

var x=0;

    $(document).ready(function() {

        $('#iframe-2').load(function() {
            $("#t2").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });

        $('#iframe-3').load(function() {
            $("#t3").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });

        $('#iframe-4').load(function() {
            $("#t4").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });
        $('#iframe-5').load(function() {
            $("#t5").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });
    });

每次使用
var
时,您都在创建
x
的本地副本。删除
var
内部的
load
功能。另外,将
var x=0
放在
文档中。就绪
@user791187检查我的答案,我给你一个演示。看到更新的答案,我想这就是了,接受它。好的,我删除了每个文件中的分号,但当iframes加载时,我仍然得到“0结果”。作为一个提醒,我对javascript和jquery都是新手,所以如果可能的话,我会非常感激!不是分号,删除关键字
var
明白了!非常感谢。我仍然得到相同的结果…“0结果”放入
document.write(x+“结果”)在上次加载iframr后。当我这样做时,它不知何故破坏了代码…现在页面上除了顶部显示的“0结果”之外没有加载任何内容谢谢!我非常感谢你的帮助…但是我还是得到了同样的结果:(@user791187)你能发布你用来测试这个的完整网页吗?
var x=0;

    $(document).ready(function() {

        $('#iframe-2').load(function() {
            $("#t2").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });

        $('#iframe-3').load(function() {
            $("#t3").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });

        $('#iframe-4').load(function() {
            $("#t4").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });
        $('#iframe-5').load(function() {
            $("#t5").css("display","inline");
            x++;
            document.getElementById("tabs-1").innerHTML=x + " Results";
        });
    });