Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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 嵌套jQuery循环中的变量范围_Javascript_Jquery_Scope - Fatal编程技术网

Javascript 嵌套jQuery循环中的变量范围

Javascript 嵌套jQuery循环中的变量范围,javascript,jquery,scope,Javascript,Jquery,Scope,尽管我已经读到了关于jQuery/JS范围的内容,但这个问题仍然困扰着我。如果我在外循环中(甚至在外循环之外)定义项,为什么变量在内循环中“未定义” 我希望item变量可以无缝地从外循环传递到内循环,但显然我遗漏了一些东西。任何解释都将不胜感激。所以,我明白了。虽然我上面的代码不完整,但这个JSFIDLE与我的实际代码更为相似,并且重现了这个问题: 基本上,我试图在内部循环中重新初始化item变量。尽管我在尝试打印或使用该变量后执行了,但它仍然受到影响。更改名称使所有操作都按预期进行。您能给出一

尽管我已经读到了关于jQuery/JS范围的内容,但这个问题仍然困扰着我。如果我在外循环中(甚至在外循环之外)定义
项,为什么变量
在内循环中“未定义”


我希望item变量可以无缝地从外循环传递到内循环,但显然我遗漏了一些东西。任何解释都将不胜感激。

所以,我明白了。虽然我上面的代码不完整,但这个JSFIDLE与我的实际代码更为相似,并且重现了这个问题:


基本上,我试图在内部循环中重新初始化item变量。尽管我在尝试打印或使用该变量后执行了,但它仍然受到影响。更改名称使所有操作都按预期进行。

您能给出一个问题的工作示例吗。使用HTML的近似版本,它似乎工作得很好:您可以使用snippit功能并使用工作代码示例编辑您的问题。Rory,我注意到在您的JSFIDLE中,第一个警报打印“Foo”,第二个警报打印“Bar”。我不希望出现这种行为,因为item变量是在外部循环中定义的,我认为它应该再次打印“Foo”(在我的代码中,我也希望这样做)。不是这样吗?如果是这样,需要做什么才能正确地将值从外循环输入到内循环?编辑:我错了,我现在注意到它每次都打印“Foo”。
$(".table1 tbody tr").each(function() {
    var $self = $(this);
    var item = $self.find("td.item").text();
    alert(item);        //This gives the correct value.
    $(".table2 tbody tr").each(function() {
        alert(item);    //item is undefined here
    }); 
});
$(".table2 tbody tr").each(function() {
    var $self2 = $(this);
    var item2 = $self2.find("td.itemx").text();
    alert(item); //item is undefined here
    //...Other stuff...
    if(true){
        var item = $self2.find("td.itemx").text();
    }
});