【问题标题】:Jquery array.push() not workingJquery array.push() 不工作
【发布时间】:2011-12-07 10:06:05
【问题描述】:

我一直在尝试使用 Jquery array.push() 函数将下拉列表中的变量添加到数组中,但由于某些奇怪的原因它无法正常工作。以下是 jsFiddle 链接: http://jsfiddle.net/dKWnb/3/

JavaScript:

$("#test").live("click",function() {
       var myarray = new Array();
        myarray.push($("#drop").val());
        alert(myarray);
});

HTML

<Select name=drop id=drop>
    <option value=1>1</option>
    <option value=2>2</option>
</select>
<input type=button name=test id=test value=test>

【问题讨论】:

  • 应该怎么做?因为它在这里所做的正是它看起来应该做的。
  • 请注意:总是以这种方式声明数组var myarray = [];
  • @马特。长话短说,一切都可以在 javascript 中重新定义,Array() 也是如此。使用[] 保证您将拥有一个数组。这也更有效率。检查这个answer,它解释得很清楚。
  • 郑重声明,.push() 方法是原生 JavaScript,与 jQuery 无关。

标签: javascript jquery arrays


【解决方案1】:

你的 HTML 应该包含属性的引号:http://jsfiddle.net/dKWnb/4/

使用 HTML5 文档类型时不需要 - 感谢@bazmegakapa

您每次都创建数组并为其添加一个值...它按预期工作?

将数组移到 live() 函数之外可以正常工作:

var myarray = []; // more efficient than new Array()
$("#test").live("click",function() {
        myarray.push($("#drop").val());
        alert(myarray);
});

http://jsfiddle.net/dKWnb/5/

另请注意,在 jQuery v1.7 的更高版本中 -> live() 方法已弃用并由on() 方法替换。

【讨论】:

  • 他使用 HTML5 文档类型。不必在属性值周围使用引号。
  • @bazmegakapa 好的理解 - 我在那里学到了一些东西 - 答案已更新
【解决方案2】:

您的代码会提醒我下拉列表的当前值,表明它已正确推送到数组中。

您要保留旧值并追加吗?您每次都在重新创建数组,这意味着旧值会被破坏。

这里有一些更新的代码:

var myarray = [];
$("#test").click(function() {
    myarray.push($("#drop").val());
    alert(myarray);
});

jsFiddle

【讨论】:

    【解决方案3】:

    另一种解决方法:

    var myarray = [];
    $("#test").click(function() {
        myarray[index]=$("#drop").val();
        alert(myarray);
    });
    

    我想将所有选中的复选框添加到数组中。例如,如果使用 .each:

    var vpp = [];
    var incr=0;
    $('.prsn').each(function(idx) {
       if (this.checked) {
           var p=$('.pp').eq(idx).val();
           vpp[incr]=(p);
           incr++;
       }
    });
    //do what ever with vpp array;
    

    【讨论】:

      【解决方案4】:
      var array = [];
      var element = "anything you want in the array";
      array.push(element); // array = [ "anything you want in the array" ]
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2017-12-15
      • 1970-01-01
      • 2022-09-23
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多