Javascript 是否有一种方法可以在所有浏览器中正确读取具有类似数组名称的隐藏输入?

Javascript 是否有一种方法可以在所有浏览器中正确读取具有类似数组名称的隐藏输入?,javascript,php,arrays,html,dom,Javascript,Php,Arrays,Html,Dom,接口有许多隐藏输入,称为“kilos[]”或“precio[]”。然后将它们传递给一个PHP函数,该函数像数组一样处理它们。一切都很好。但是,如果我需要从表中删除一行(tr)(输入也将被删除),那么我将执行以下操作: var e=t.parentNode.parentNode; var ix=e.sectionRowIndex; var p=e.parentNode; var f2=t.form; var kl= p.rows.length > 2 ? f2.elements["kilos

接口有许多隐藏输入,称为“kilos[]”或“precio[]”。然后将它们传递给一个PHP函数,该函数像数组一样处理它们。一切都很好。但是,如果我需要从表中删除一行(tr)(输入也将被删除),那么我将执行以下操作:

var e=t.parentNode.parentNode;
var ix=e.sectionRowIndex;
var p=e.parentNode;
var f2=t.form;
var kl= p.rows.length > 2 ? f2.elements["kilos[]"][ix].value : f2.elements["kilos[]"].value;
var pc= p.rows.length > 2 ? f2.elements["precio[]"][ix].value:f2.elements["precio[]"].value;
f2.tokilos.value-=parseFloat(kl).toFixed(2);
f2.tomonet.value-=parseFloat(pc).toFixed(2);
f2.totamb.value-=parseFloat(kl).toFixed(2);
p.removeChild(e);
请注意,此代码仅在Chrome中可用,其他任何地方都不可用。你能看到需要做些什么才能得到正确的“kilos[]”和“precio[]”值吗

如果表中剩余的总行数大于2,则我可以使用:

f2.元素[“千克[]”][ix].值

但是,如果行数不大于2,则需要执行以下操作:

f2.元素[“千克[]”值

这是它工作的唯一方式,而且只有在Chrome中。sectionRowIndex始终返回正确的值;当tbody中的行数仅为1(最后一行)时,
表单.elements[“name[]”][ix].value本身的行为不符合预期。代码可以工作,并且做我需要它做的事情;然而,奇怪的是,需要这样一种变通办法

是否有一种方法可以在所有浏览器中使用纯javascript实现此功能?

您可以使用它,它将始终返回类似数组的对象

如果要将搜索限制为特定元素,可以使用:


仅供参考,
sectionRowIndex
rowIndex
将是可怕的标签。标签用于对问题进行分类,并允许我们根据兴趣跟踪标签。你认为谁会对“rowIndex”感兴趣但是,这里的问题是为什么form.elements[“name”][index]只有在tbody包含多行时才能正常工作。而且,它只适用于Chrome。JavaScript还远不是一个可信任的标准吗?@user3599566:这与JavaScript无关,它是DOM接口。看见基本上,它形式化了,如果只有一个具有给定名称的元素,那么应该返回它;用户可能打开了多个表单(每个表单的ID不同)。我无法找到按名称查找元素的表单方法;但我现在正在努力。如果我的SPA只有一份文件,那就行了;但是任何数量的相同表单(具有不同的数据)都可以在任何时候打开!
var kl=f2.querySelectorAll('[name=“kilos[]”]'])[ix].value;var pc=f2.querySelectorAll('[name=“precio[]”“]')[ix].value不用担心,至少你可以通过点击旁边的勾选框来“接受”答案。
var inputs = f2.querySelectorAll('[name="kilos[]"]');
// or
 var inputs = document.querySelectorAll('#formID [name="kilos[]"]');