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