2015-05-09 110 views
0

我有20個文本框名字,姓氏,電子郵件等......我想使用for循環創建這些文本框值的對象。如何在javascript中使用for循環創建對象

var object = {}; 
for (var x = 0; x; x++) { 

這就是我試圖得到儘可能結果:

Object {name: "gill", lastname: "bill", email: "[email protected]"} 
+1

如果你正在使用jQuery,來看看這個選擇:http://stackoverflow.com/questions/ 10322891 /循環遍歷所有文本框在窗體使用jquery –

回答

1
var inputs = ...; 

var obj = {}; 
for (var i = 0; i < inputs.length; i++) 
    obj[inputs[i].name] = inputs[i].value; 

您在...如何填補取決於你的投入是如何在你的HTML定義,你想怎麼組他們。如果您想選擇所有頁面上的輸入,你可以使用

var inputs = document.getElementsByTagName('input'); 

但可以給你怪異的行爲,如果你曾經添加其他輸入就像一個搜索欄到您的網頁。

如果你所有的領域都包含有一個id一些祖先元素中,你可以使用:

var inputs = document 
    .getElementById('ancestorId') 
    .getElementsByTagName('input') 
; 
+0

很好。你也可以將輸入的長度附加到一個變量上,以便它只計算一次,而不是在每次循環迭代中計算。如果長度很小,它可能不會增加很多性能,但是你永遠不知道後面的情況會如何增長。 – bpbutti

+0

@bpbutti我懷疑它有什麼區別。我認爲解釋器足夠聰明,可以看到你沒有修改該循環內部的長度,而length屬性只是一個屬性查找。這不像訪問length屬性導致數組被計數。閱讀'length'屬性與閱讀Javascript中任何對象的任何屬性沒有什麼不同。 'length'屬性在修改時只有特殊的行爲。 – Paulpro

+0

是的,我認爲你是對的。我搜索了更多關於它的信息,它似乎沒有再有所作爲了。也許我一直在閱讀一些關於這一點的舊書。發動機現在很聰明,緩存長度可能會讓事情變慢。即使它在某些情況下有助於表現一點點,但它是不值得的。感謝您的高舉。 – bpbutti