Неправильное сложение цифр всех input

112
30 сентября 2019, 00:30

Здраствуйте! У меня такое задание. На странице есть несколько form, в form несколько input, в input числа. Я должен с помощью вложенных циклов сложить все числа input на всей странице. Проблема в том, что если в первый input я записываю число больше 9, т.е. двухзначное, трехзначное и т.д. , сначала почему то сумма чисел удваивается, а только потом идет сложение.

Вот код:

let sum = 0; 
 
for(let i = 0; i < document.forms.length; i++){ 
  for(let j = 0; j < document.forms[i].elements.length; j++){ 
    for(let k = 0; k < document.forms[i].elements[j].value.length; k++){ 
        console.log(sum); 
       sum += Number(document.forms[i].elements[j].value); 
    } 
  } 
} 
console.log(sum);
<form action=""> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
</form> 
<form action=""> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
</form> 
<form action=""> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
  <input type="text" value = 1></input> 
</form>

Если вопрос не понятен, скажите мне об этом, я попробую переформулировать. Заранее спасибо)

Answer 1

Не нужен внутренний цикл - k нигде не используется.

function sumAll() { 
  let sum = 0; 
  document.querySelectorAll("form input[type='text']").forEach(el => { 
    var v = +el.value; 
    if (!isNaN(v)) 
      sum += v; 
  }); 
  console.log(sum); 
}
<form action=""> 
  <input type="text" value="11" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
</form> 
<form action=""> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
</form> 
<form action=""> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
  <input type="text" value="1" /> 
</form> 
<br/> 
<button onclick="sumAll()">Summ All</button>

READ ALSO
jQuery. Дубликаты значений

jQuery. Дубликаты значений

Трудность в следующем: берется шаблон (тег template) из html файлаПри нажатии по кнопке создается разметка из шаблона в html файле, на котором навешивается...

90
Клик в любом месте страницы для удаления класса элемента

Клик в любом месте страницы для удаления класса элемента

Есть на странице видеоролик с ютюба с маской на немПо клику - я эту маску убираю, добавлением класса без маски

123