将变量附加到现有数组

时间:2015-01-14 00:54:55

标签: javascript jquery arrays

好的......这就是我所拥有的:

$('#more_rows').click(function(){
var allvars = [];
var threevar = $('#third_select option:selected').text();
allvars.push(threevar);
});

这将获取选择框的当前所选选项的文本。我认为它会将该文本推送到新创建的allvars数组中。它在第一次点击功能发生时推送文本,我得到了这个:

["Example Text 1"]

但是,当从select中选择一个新选项并再次点击该功能时,我得到了这个:

["Example Text 2"]

我想要的是:

["Example Text 1","Example Text 2"]

并且能够根据需要为此数组添加任意数量的项目。

我在这里犯了什么错误?有更好的方法吗?

4 个答案:

答案 0 :(得分:2)

只需将数组初始化移出函数即可。

$(function() {
   var allvars = [];

    $('#more_rows').click(function(){
        var threevar = $('#third_select option:selected').text();
        allvars.push(threevar);
    });
});

答案 1 :(得分:1)

每次在点击处理程序中重新声明您的allvars;考虑在外面确定范围,例如在DOM就绪处理程序中:

jQuery(function($) {
    var allvars = [];

    $('#more_rows').click(function() {
        var threevar = $('#third_select option:selected').text();
        allvars.push(threevar);
    });
});

答案 2 :(得分:1)

您需要在函数范围之外创建数组。

基本上每次单击选择框时,都会创建新的空变量并将值推入其中。

var allvars = [];

$('#more_rows').click(function(){

var threevar = $('#third_select option:selected').text();
    allvars.push(threevar);
});

答案 3 :(得分:0)

每次调度click事件时,您都在创建新数组。