我有这段代码:
<script type="text/javascript">
function showTotal(form, totalEl)
{
var el, els = form.elements;
var sum = 0;
for (var i=0, num=els.length; i<num; ++i){
el = els[i];
if ('text' == el.type){ //&& /SumB/.test(el.name)
sum += +el.value;
}
form.elements[totalEl].value = sum;
}
}
</script>
如果我使用警报,我会得到正确的输出,但它会将错误的值填入&#34; totalEl&#34;你可以测试它(固定)它是复选框和文本框的第一个块!
答案 0 :(得分:0)
如果你尝试
,它是否有效<script type="text/javascript">
function showTotal(form, totalEl)
{
var el, els = form.elements;
var sum = 0;
for (var i=0, num=els.length; i<num; ++i){
el = els[i];
// Do not include totalEl
if ('text' == el.type && el != form.elements[totalEl]) {
sum += +el.value;
}
}
form.elements[totalEl].value = sum;
}
</script>
如果totalEl
是表单的元素,那么form.elements[totalEl].value = sum;
行必须在for
循环之外,否则totalEl
本身的值将包含在最后一次计算,得到一笔双和。
答案 1 :(得分:0)
它将在“sum”文本元素中添加值以及它现在的编写方式。使用一个类,或者在添加之后从新总计中减去当前总数,或者在循环之前将元素归零。
正如另一个回答所提到的那样,设置“sum”字段的部分也不应该在循环中。