Jquery array.push() not working



我一直试图添加变量从下拉到一个数组使用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>

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

当使用HTML5 doctype时不需要-感谢@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()方法。

您的代码为我提醒下拉列表的当前值,显示它已正确地推入数组。

要保留旧值并追加吗?每次都要重新创建数组,这意味着旧的值会被删除。

下面是一些更新后的代码:

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

jsFiddle

另一个解决方法:

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;
var array = [];
var element = "anything you want in the array";
array.push(element); // array = [ "anything you want in the array" ]

最新更新