Javascript 循环遍历具有不同名称的表单字段

Javascript 循环遍历具有不同名称的表单字段,javascript,loops,field,Javascript,Loops,Field,我有一个表单,有一堆文本字段。有些字段是相关的,我需要循环遍历它们,并将值字段中的数字相加 这些字段的名称都不同,因此我可以将它们区分开来,因此我不确定如何查看它们 我可以将它们全部设置为相同的ID或相同的内容,然后基于共享属性执行循环吗?我宁愿不必手动全部检查它们,但如果有必要,我可以这样做 我想,如果所有字段都是表单数组的一部分,我可以找出我想要的字段的起始和终止位置,并以这种方式循环它们?嗯给他们所有人一个类名。例如,class=“inputs”。 将它们添加到数组中,然后使用for循环进

我有一个表单,有一堆文本字段。有些字段是相关的,我需要循环遍历它们,并将值字段中的数字相加

这些字段的名称都不同,因此我可以将它们区分开来,因此我不确定如何查看它们

我可以将它们全部设置为相同的ID或相同的内容,然后基于共享属性执行循环吗?我宁愿不必手动全部检查它们,但如果有必要,我可以这样做


我想,如果所有字段都是表单数组的一部分,我可以找出我想要的字段的起始和终止位置,并以这种方式循环它们?嗯

给他们所有人一个类名。例如,
class=“inputs”
。 将它们添加到数组中,然后使用
for
循环进行循环

var inputs = document.getElementsByClassName("inputs");
for(i =0; i < inputs.length; i++) 
{
  // whatever you want to do now.
}
var inputs=document.getElementsByClassName(“inputs”);
对于(i=0;i
以前有人问过这个问题,尽管这个问题的措辞不同

在这里查看几个解决方案,包括tinkerBot已经给出的解决方案


如果需要给定表单的所有输入,可以使用jquery轻松获取表单中的所有输入并迭代输出值:


原生JavaScript要简单得多。表单节点是其所有命名控件的数组,以及具有属性的对象

中和中描述了命名控件

W3C解决方案非常优雅

var form = document.querySelectorAll( 'form' )[0];
var total = 0;
for (var i = 0; i < form.length; i++) {
    console.log( form[i] );
    total += parseInt( form[i].value );
}
var form=document.querySelectorAll('form')[0];
var合计=0;
对于(变量i=0;i

不需要图书馆。唯一的缺点是表单中的
字段集
也会被迭代。

如果您想编写语义HTML,您应该将相关的
字段分组到一个字段中,向其添加一个id,然后使用以下命令循环它们:

var total = 0;
var inputs = document.querySelector('yourFieldsetId').querySelectorAll('input');
for (var i = 0; i < inputs.length; ++i) {
  total += Number(inputs[i].value);
}
var总计=0;
var inputs=document.querySelector('yourFieldsetId')。querySelectorAll('input');
对于(变量i=0;i
id必须是唯一的,但您可以给它们所有相同的class属性,并按其类选择它们。如果使用像jquery这样的库,按类名选择是非常容易的。因此文本输入包含数字,您想循环并将这些数字相加吗?好的。所以我可以在我想要循环的每个输入字段中添加class=“whatever”?这听起来是个完美的解决方案。我试试看。谢谢,真的!我几乎所有的东西都用这个!不客气,祝你好运!我想知道为什么这被否决了。我的意思是,当然可能不是最好的10+元素和一类“输入”,但是,它真的值得向下投票吗?我的意思是他的代码仍然有效。这不应该被否决。由于getElementByName是一种有用的方法,在HTML5中被去除了污点,因此getElementByClassName是一种很好的替代方法——特别是对于通过分组输入(如单选按钮和复选框)进行迭代。这应该是公认的解决方案。。。哪一个应该是最好的解决方案,而不仅仅是问题作者最终使用的解决方案。是的,应该是这样的,而且总是使用jQuery是让人开始讨厌javascript的东西。否决,因为这也会返回,没有
.value
.upvoted@DanDascalescu。
var total = 0;
var inputs = document.querySelector('yourFieldsetId').querySelectorAll('input');
for (var i = 0; i < inputs.length; ++i) {
  total += Number(inputs[i].value);
}