2012-02-20 30 views
1
var arr = $(".producttypeid"); 
var premiumtypecodes = Array(arr.length); 
for (var i = 0; i < arr.length; i++) 
    premiumtypecodes[i] = arr[i].value; 

上述代碼看起來不起作用。目的是將輸出分配給一個數組。任何我缺少的東西。 爲什麼這個簡單的代碼不起作用?推理將受到高度讚揚....將選擇器輸出分配給數組 - jQuery

基於反饋,我添加了示例標記並添加了詳細信息,以使我的意圖不受任何干擾。

<input class="producttypeid" type="hidden" value="512"> 

我想用風格producttypeid數組

+0

可能是因爲選定的DOM元素不是表單元素,因此沒有'value'屬性。 '.producttypeid'是什麼樣的元素? – 2012-02-20 12:16:18

+0

只是一個想法:你確定你需要轉換嗎?包裝組基本上是一個數組,也許你可以直接使用arr? – 2012-02-20 12:19:37

+0

向問題添加更多數據。我只需要捕獲值屬性。這裏是示例標記 2012-02-20 12:43:14

回答

3

這裏提取所有標籤的價值,並是我怎麼會做它:

var arr = $(".producttypeid"); 
var premiumtypecodes = []; 
arr.each(function(index) { 
    premiumtypecodes[index] = this.value; 
}); 

即假定所有匹配的元素都input元素(因爲使用了value)。如果他們中的一些可能是textareaselect元素,然後換行迭代函數裏面:

premiumtypecodes[index] = $(this).val(); 

如果他們沒有形成在所有領域,你必須確定你的意思是什麼他們的「價值「(例如,你可以使用$(this).text()來獲得他們的文本內容,或$(this).html()獲得他們的標記,或完全是其他的東西)。

我沒有立即看到你的版本比你少的ivar其他任何問題:

for (var = 0; i < arr.length; i++) 
//  ^--- here 

除此之外,它應該有工作,但要注意的是,雖然Array(arr.length)作品,通常編寫它的方法是new Array(arr.length)(並且沒有必要預先設置長度; JavaScript數組aren't really arrays,所以你沒有得到通常的好處)。

+0

修復了代碼中的錯字..正在嘗試我機器上的各種組合。忘記爲我想描述的問題正確編輯。謝謝 – 2012-02-20 12:16:17

+0

@ user129206:如果上述內容沒有對它進行排序,您將不得不創建一個最小複製測試用例並將其發佈到問題中(並且理想情況下也適用於http://jsbin.com或http:// jsfiddle .net,但是也必須在代碼中包含代碼)。 – 2012-02-20 12:44:21

+0

我實際上是使用您在代碼中使用的數組的文字表示。 var premiumtypecodes = [];由於這不起作用,我嘗試了各種方法。順便說一句,你的代碼工作,並做我想要的。任何想法爲什麼我寫的代碼不起作用? – 2012-02-20 12:49:39

1

jQuery提供了這種事情輔助方法......

var premiumtypecodes = arr.map(function() { 
    return this.value; 
}).get(); 

map

0

您應該使用makeArray()一個jQuery方法Convert an array-like object into a true JavaScript array.

var obj = $(".producttypeid"); 

var arr = $.makeArray(obj); 

從文檔

採取

jQuery和JavaScript中的許多方法通常返回 類似數組的對象。例如,jQuery工廠函數 $()會返回一個jQuery對象,該對象具有許多 數組(長度,[]數組訪問運算符等)的屬性,但不是 與數組完全相同並缺少一些數組內置的 方法(如.pop()和.reverse())。

請注意,轉換後,對象具有的所有特殊功能 (例如本示例中的jQuery方法)將不再存在。 該對象現在是一個普通數組。

+1

'arr [i] .value'是原始代碼:它添加了DOM元素而不是它們的值。 – lonesomeday 2012-02-20 12:12:16

+0

@lonesomeday我同意你的意思,但我明白他想創建一個DOM元素數組(這個問題並不清楚) – 2012-02-20 12:14:48

+0

我只需要捕獲value屬性並創建一個數組。這是示例文本。 2012-02-20 12:42:24

0

這裏是我是如何做到的

VAR ARR = []; 。

$( 「producttypeid」)每個(函數(指數,選擇器){

arr.push($(選擇器)的.text());

});