变量超出范围

时间:2013-10-09 20:25:16

标签: jquery

我想迭代几个输入字段然后添加到order数组。

each()完成后,我想要使用addTask数组调用order函数。但

当我在控制台中运行时,它会跳转到addTask(order)并且只获得1个结果

当我将order数组移出函数时,它不知道它在那里。 在each()完成后,将其重新纳入范围是可取的。

// Start adding orders to display
$("#btn-new-line").on('click', function(){
 $("input:text").each(function(index, element){
     var elem = $(element);
     var order = [] ;
     order.push(elem.val()+ " ");
});
addTask(order); //* unresolved variable *
});

5 个答案:

答案 0 :(得分:2)

每次循环都会覆盖“订单”变量。

// Start adding orders to display
$("#btn-new-line").on('click', function(){
   var order = [] ;
   $("input:text").each(function(index, element){
       var elem = $(element);
       order.push(elem.val()+ " ");
   });
   addTask(order); //* unresolved variable *
});

答案 1 :(得分:0)

声明如下:

$("#btn-new-line").on('click', function(){
   var order = [] ;
    $("input:text").each(function(index, element){
        var elem = $(element);
        order.push(elem.val()+ " ");
    });
    addTask(order); //* unresolved variable *
});

答案 2 :(得分:0)

// Start adding orders to display
var order = [] ;
$("#btn-new-line").on('click', function(){
 $("input:text").each(function(index, element){
     var elem = $(element);
     order.push(elem.val()+ " ");
});
addTask(order); //* unresolved variable *
});

答案 3 :(得分:0)

在点击处理程序中声明您的order变量:

// Start adding orders to display
$("#btn-new-line").on('click', function(){
   var order = [] ;

   $("input:text").each(function(index, element){
     var elem = $(element);
     order.push(elem.val()+ " ");   // order still accessible through the enclosing function.
   });
  addTask(order);

});

答案 4 :(得分:-3)

订单范围仅限于回调,因为您在其中创建而不是扩展它。

$("#btn-new-line").on('click', function () {
    $("input:text").each(function (index, element) {
        var elem = $(element);
        var order = [];
        order.push(elem.val() + " ");
        addTask(order); //* unresolved variable *
    });
});