Суммировать элементы таблицы

начал изучение js и немного подзавис на этом задании. нужно получить сумму всех элементов матрицы, но пока вышло только получить сумму каждой строки отдельно. была мысль после каждого шага додавать результат суммирования ряда и так получить общую сумму, но с реализацией немного торможу. буду благодарен за подсказки.

<script language = "JavaScript"> {
      var str, stb;
      function build(){
          str = parseInt(main_form.t_str.value);
          stb = parseInt(main_form.t_stb.value);
          var res_str = "<table>\n";
          for(var i=1;i<=str;i++){
              res_str+="<tr>\n";
              for(var j=1;j<=stb;j++){
                  res_str += "<td>";
                  res_str += "<input type = \"text\" id = \"_" + i + "_" + j + "\" value = \"" + i + "" + j + "\">";
                  res_str += "<\/td>\n";
                }
                  res_str+="<\/tr>\n";
            }
                  res_str += "<\/table>";
                  main_div.innerHTML = res_str;
        }
        function calculate() {
            var res_str;
            var str_report = "";
            for(var i=1;i<=str;i++) {
                var sum = 0;
                for(var j=1;j<=stb;j++){
                    res_str = "sum += parseInt(main_form._" + i + "_" + j + ".value);";
                    eval(res_str);
                    }
                    str_report += "Сума элементов матрицы = " + sum + ";\n"
            }
 
            alert(str_report);
        }
    }
  </script>

Ответы (1 шт):

Автор решения: vp_arth

Два варианта:

function calculate() {
  let str = parseInt(main_form.t_str.value);
  let stb = parseInt(main_form.t_stb.value);
  let sum1 = 0;
  let sum2 = 0;
  for(let i=1;i<=str;i++){
    for(let j=1;j<=stb;j++){
      sum1 += parseInt(i+''+j, 10); // знаем, что мы делали в build
      sum2 += parseInt(main_form[`_${i}_${j}`].value, 10); // смотрим в поля 
    }
  }
  return sum1;
}

Другой вариант — пробежаться по всем input в main_div:

function calculate() {
  let sum = 0;
  main_div.querySelectorAll('input')
          .forEach(field => sum += +field.value);
  return sum
}
→ Ссылка