尽管我已经读过关于jQuery / JS范围的内容,但这个仍然让我感到困惑。如果我在外部循环中(或者甚至在外部循环之外)定义它,为什么内部循环中的$scope.pages = {
items:[
{
startNumber:1,
endNumber:''
},
{
startNumber:'',
endNumber:''
}
]
};
$scope.autoStartPageNumber = function (index) {
if(index +1 < $scope.pages.items.length){
$scope.pages.items[index+1].startNumber=$scope.pages.items[index].endNumber + 1;
}
};
$scope.addRow = function() {
$scope.pages.items.push({
startNumber:'',
endNumber:''
});
};
变量item
?
'undefined'
我希望item变量可以无缝地从外循环传递到内循环中,但显然我错过了一些东西。任何解释都将非常感激。
答案 0 :(得分:0)
所以,我明白了。虽然上面的代码不完整,但这个jsfiddle更接近我的实际代码并且还会重现问题:https://jsfiddle.net/11dwarcb/5/
$(".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();
}
});
基本上,我试图在内循环中重新初始化item变量。即使我在尝试打印或使用该变量之后这样做,它仍然受到影响。更改名称使一切都按预期工作。