我有20個文本框名字,姓氏,電子郵件等......我想使用for循環創建這些文本框值的對象。如何在javascript中使用for循環創建對象
var object = {};
for (var x = 0; x; x++) {
這就是我試圖得到儘可能結果:
Object {name: "gill", lastname: "bill", email: "[email protected]"}
我有20個文本框名字,姓氏,電子郵件等......我想使用for循環創建這些文本框值的對象。如何在javascript中使用for循環創建對象
var object = {};
for (var x = 0; x; x++) {
這就是我試圖得到儘可能結果:
Object {name: "gill", lastname: "bill", email: "[email protected]"}
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')
;
很好。你也可以將輸入的長度附加到一個變量上,以便它只計算一次,而不是在每次循環迭代中計算。如果長度很小,它可能不會增加很多性能,但是你永遠不知道後面的情況會如何增長。 – bpbutti
@bpbutti我懷疑它有什麼區別。我認爲解釋器足夠聰明,可以看到你沒有修改該循環內部的長度,而length屬性只是一個屬性查找。這不像訪問length屬性導致數組被計數。閱讀'length'屬性與閱讀Javascript中任何對象的任何屬性沒有什麼不同。 'length'屬性在修改時只有特殊的行爲。 – Paulpro
是的,我認爲你是對的。我搜索了更多關於它的信息,它似乎沒有再有所作爲了。也許我一直在閱讀一些關於這一點的舊書。發動機現在很聰明,緩存長度可能會讓事情變慢。即使它在某些情況下有助於表現一點點,但它是不值得的。感謝您的高舉。 – bpbutti
如果你正在使用jQuery,來看看這個選擇:http://stackoverflow.com/questions/ 10322891 /循環遍歷所有文本框在窗體使用jquery –