2015-05-28 45 views
0

我正在制定這個問題: 是否有可能從所有輸入類型文本中使用的.name.value數據自動創建一個數組?JavaScript創建數組與輸入名稱和值

這是參考手動做:我有這個想法

var foo = []; 
foo['bar'] = 'foo data'; 
foo['foo'] = 'bar data'; 

...和它的作品...

var foo[]; 
for (var i = 0; i < document.getElementsByTagName('input').length; i++) 
{ 
    foo[document.getElementsByTagName("input")[i].name] = document.getElementsByTagName("input")[i].value; 
}; 

的任務是使其自動工作。 獲取輸入的.name並獲取該輸入的.value

我在編輯這個問題在這裏發佈......當我想出如何做到這一點。我決定在這裏留下參考資料,我猜想對某個人會有用。

歡迎反饋。

+1

@adeneo在JavaScript數組** **是對象 –

+2

沒有,在JavaScript陣列陣列中,*型*的對象。 – adeneo

+1

當你在第一個循環中已經有了這些信息時,創建另一個數組有什麼意義? –

回答

0

你的代碼是不夠合理,除了兩件事情:

  • 使用對象而不是數組的。
  • 僅創建一次輸入列表。

所以,你可以這樣做:

var values = {}; 
var inputs = document.getElementsByTagName('input'); 
for(var i = 0; i < inputs.length; i++) { 
    values[inputs[i].name] = inputs[i].value; 
} 
+0

使用Array對象的對象實例有什麼區別? – wwwanaya

+0

雖然你可以爲此使用數組,但它可以工作,但它不是數組的預期用途。當您要使用數字索引時,應該使用數組,而不是作爲鍵值存儲。既然你來自PHP,你可能習慣於單一的「關聯數組」類型,它可以用於兩個目的。但是JavaScript有一個與Array類型不同的對象類型,所以當你需要一個鍵值存儲時,習慣使用它。 –

+0

另請注意,很多JavaScript數據類型都是從Object派生的,或者可以像對象一樣使用。例如,一個函數也是一個對象,並且可以爲其分配屬性。所以你可以說'var values = function(){};'和其餘的代碼仍然可以工作!但是,任何閱讀你的代碼的人都會摸不清頭腦,想知道「爲什麼這是一個函數?它看起來像你只是用它作爲一個對象。」當您應該使用對象時,使用數組也是如此。 –

相關問題