输出数量翻倍

时间:2011-11-20 12:55:48

标签: javascript sum

我有这段代码:

<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;你可以测试它(固定)它是复选框和文本框的第一个块!

2 个答案:

答案 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”字段的部分也不应该在循环中。