嵌套jQuery循环中的变量范围

时间:2017-07-18 14:59:38

标签: javascript jquery scope

尽管我已经读过关于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变量可以无缝地从外循环传递到内循环中,但显然我错过了一些东西。任何解释都将非常感激。

1 个答案:

答案 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变量。即使我在尝试打印或使用该变量之后这样做,它仍然受到影响。更改名称使一切都按预期工作。