所以我有一个带有一堆文本字段的表单。有些字段是相关的,我需要遍历它们并将值字段中的数字相加。
这些字段的名称都不同,因此我可以将它们区分开来,因此我不确定如何查看它们。
我可以将它们全部设置为相同的 ID 或相同的东西,然后根据共享属性进行循环吗?我宁愿不必手动完成所有这些,但如果必须的话,我可以这样做。
我想也许如果所有字段都是表单数组的一部分,我可以找出我想要开始和停止的字段并以这种方式循环它们?嗯
所以我有一个带有一堆文本字段的表单。有些字段是相关的,我需要遍历它们并将值字段中的数字相加。
这些字段的名称都不同,因此我可以将它们区分开来,因此我不确定如何查看它们。
我可以将它们全部设置为相同的 ID 或相同的东西,然后根据共享属性进行循环吗?我宁愿不必手动完成所有这些,但如果必须的话,我可以这样做。
我想也许如果所有字段都是表单数组的一部分,我可以找出我想要开始和停止的字段并以这种方式循环它们?嗯
原生 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 );
}
不需要图书馆。唯一的缺点是fieldset
表单中的 s 也会被迭代。
给他们一个类名。例如。class="inputs"
. 将它们添加到数组中,然后循环遍历for
。
var inputs = document.getElementsByClassName("inputs");
for(i =0; i < inputs.length; i++)
{
// whatever you want to do now.
}
如果您想编写语义 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);
}
如果您想要给定表单的所有输入,您可以使用 jquery 轻松获取表单中的所有输入并迭代出值:
$("#form1").find("input").each(function( index ) {
console.log($(this).val()); // the value of each input
});