我有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 –