Jquery array.push()不起作用

时间:2011-12-07 10:06:05

标签: javascript jquery arrays

我一直在尝试使用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>

3 个答案:

答案 0 :(得分:13)

您的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的更高版本中 - &gt;不推荐使用live()方法,并将其替换为on()方法。

答案 1 :(得分:4)

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

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

以下是一些更新的代码:

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

jsFiddle

答案 2 :(得分:0)

另一种解决方法:

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;