3

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

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

我可以将它们全部设置为相同的 ID 或相同的东西,然后根据共享属性进行循环吗?我宁愿不必手动完成所有这些,但如果必须的话,我可以这样做。

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

4

5 回答 5

6

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

命名控件在HTML5 规范HTML 4.01中有所描述。

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 );
}

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

于 2014-12-23T21:46:19.397 回答
2

给他们一个类名。例如。class="inputs". 将它们添加到数组中,然后循环遍历for

var inputs = document.getElementsByClassName("inputs");
for(i =0; i < inputs.length; i++) 
{
  // whatever you want to do now.
}
于 2013-09-06T15:43:47.960 回答
-1

以前有人问过这个问题,尽管这个问题的措辞不同。

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

如何解析 input[] 值并将它们放入 Javascript 数组

于 2013-09-06T15:47:04.397 回答
-1

如果您想编写语义 HTML,您应该将相关<input>字段分组到一个fieldset中,向其中添加一个 id,然后通过它们循环:

var total = 0;
var inputs = document.querySelector('yourFieldsetId').querySelectorAll('input');
for (var i = 0; i < inputs.length; ++i) {
  total += Number(inputs[i].value);
}
于 2015-09-05T23:35:08.453 回答
-3

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

http://jsfiddle.net/3TyZA/

$("#form1").find("input").each(function( index ) {
     console.log($(this).val()); // the value of each input
});
于 2013-09-06T15:51:41.187 回答