如何在函数外部获取数组?

时间:2012-06-08 07:43:10

标签: javascript jquery

$("#div").click(function(){
 $('#myselect').change(function() {
     var names = [];
     $('.checkbox input').each(function() {
           if(this.value != ''){
                 names.push(this.value);
                }
             });
     console.log(names);
  });
});

我需要使用该函数外部的names来在另一个函数上使用它。谁能告诉我怎么做?

$("#dropdown").change(function(){
  console.log(names);
});

names是一个数组。

3 个答案:

答案 0 :(得分:3)

在函数外定义“名称”...

var names = [];

    $('#myselect').change(function() {

         $('.checkbox input').each(function() {
               if(this.value != ''){
                     names.push(this.value);
                    }
                 });
         console.log(names);
      });

答案 1 :(得分:2)

您应该从该更改事件处理程序中调用另一个函数。在它之外定义数组是没有意义的,它与该事件绑定。

function gotNewNames(names) {
    // do something every time the value changes
}

$("#div").click(function(){
    $('#myselect').change(function() {
        var names = [];
        $('.checkbox input').each(function() {
            if(this.value != ''){
                names.push(this.value);
            }
        });
        gotNewNames(names);
    });
});

如果您只需要能够在其他地方获取当前值,则应该在更高的范围内声明变量,例如在点击处理程序中:

$("#div").click(function(){
    var names;
    $('#myselect').change(function() {
        names = []; // don't forget to reset before filling
        $('.checkbox input').each(function() {
            if(this.value != ''){
                names.push(this.value);
            }
        });
    });
    $("#dropdown").change(function(){
        console.log(names);
    });
});

答案 2 :(得分:1)

你的意思是这样的:

如果我错过了什么,请告诉我。

否则希望这有帮助,

<强>代码

 var names = []; // Move the name array to outer scope 

 $("#div").click(function(){

    $('#myselect').change(function() {

        $('.checkbox input').each(function() {
            if(this.value != ''){
                names.push(this.value);
            }
        });
        console.log(names);
    });

    alert(names);
});