【发布时间】:2015-06-19 13:25:18
【问题描述】:
一个界面有许多隐藏的输入,称为“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.elements["kilos[]"][ix].value
但是,如果行数不大于2,我需要这样做,而不是:
f2.elements["kilos[]"].value
这是它工作的唯一方法,而且只能在 Chrome 中使用。 sectionRowIndex 始终返回正确的值;当 tbody 中的行数仅为 1(最后一个)时,form.elements["name[]"][ix].value 本身的行为并不符合预期。该代码有效并完成了我需要完成的工作;然而,奇怪的是需要这样的解决方法。
有没有办法使用纯 javascript 在所有浏览器中实现这一点?
【问题讨论】:
-
仅供参考,
sectionRowIndex和rowIndex将是可怕的标签。标签用于对问题进行分类,并允许我们按兴趣关注标签。你认为谁会对“rowIndex”感兴趣? ;)
标签: javascript php arrays html dom