2011-12-07 59 views
7

我一直在嘗試從下拉列表中添加變量到使用jquery array.push()函數的數組中,但出於某種奇怪的原因,它不起作用。以下是的jsfiddle鏈接: http://jsfiddle.net/dKWnb/3/jquery array.push()不起作用

的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

它應該怎麼做?因爲它在這裏確實是它看起來應該做的。 – netiul

+1

只需要注意:總是用這種方式聲明數組''var myarray = [];' –

+0

@DidierG .:爲什麼? – Matt

回答

10

你的HTML應該包括引號的屬性: http://jsfiddle.net/dKWnb/4/

使用HTML5的doctype當不需要時 - 感謝@bazmegakapa

您每次創建數組併爲其添加一個值...它的工作如預期?

移動生活()函數的外部陣列正常工作:

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的更新版本 - >活()方法已被棄用,由on()方法取代。

+2

他使用HTML5文檔類型。在屬性值周圍使用引號不是強制性的。 – kapa

+2

@bazmegakapa ok瞭解 - 我在那裏學到了東西 - 回答更新 – ManseUK

4

您的代碼提醒下拉我的當前值,表明它已經正確地被推入陣。

你想保留舊值並追加?您每次都重新創建數組,這意味着舊值會被破壞。

下面是一些更新的代碼:

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

jsFiddle