Суммировать элементы таблицы
начал изучение 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
}