выходной номер удваивается - PullRequest
0 голосов
/ 20 ноября 2011

У меня есть этот код:

<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>

Если я использую оповещение, я получаю правильный вывод, но он заполняет неправильное значение в "totalEl". Вы можете проверить это на (исправлено) Это первый блок флажков и текстовых полей!

Ответы [ 2 ]

0 голосов
/ 20 ноября 2011

Это добавит значение в текстовый элемент «sum» так же, как написано прямо сейчас. Используйте класс, или вычтите текущую сумму из новой суммы после добавления, или просто обнулите элемент перед циклом.

Как упоминается в другом ответе, часть, которая устанавливает поле "сумма", также не должна быть в цикле.

0 голосов
/ 20 ноября 2011

Работает ли это, если вы попробуете

<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 будет включено в последний расчет, что приведет к двойной сумме .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...