我一直在尝试使用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>
答案 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);
});
另请注意,在jQuery v1.7的更高版本中 - &gt;不推荐使用live()方法,并将其替换为on()方法。
答案 1 :(得分:4)
您的代码会提醒我下拉列表的当前值,表明它已正确推送到数组中。
您想要保留旧值并追加吗?您每次都在重新创建数组,这意味着旧值会被破坏。
以下是一些更新的代码:
var myarray = [];
$("#test").click(function() {
myarray.push($("#drop").val());
alert(myarray);
});
答案 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;