Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Суммирование стобцов (https://javascript.ru/forum/jquery/79065-summirovanie-stobcov.html)

Asew 12.12.2019 17:52

Суммирование стобцов
 
Есть 2 таблицы вида:
<form name = "View">
<table>
<tr>
    <td><input name = "test_1" class="my_class" id = "sum_1"></td> 
    <td><input name = "test_2" class="my_class" id = "sum_2"></td>
    <td><input name = "test_3" class="my_class" id = "sum_3"></td>
</tr>
</table>
<table>
<tr>
    <td><input type = "text" name = "zzz_sum_1" class="class_test_n" value = "1"</td> 
    <td><input type = "text" name = "ppp_sum_2" class="class_test_p" value = "2"</td>
    <td><input type = "text" name = "nnn_sum_3" class="class_test_n" value = "3"</td>
</tr>
<tr>
    <td><input type = "text" name = "zzz_sum_1" class="class_test_n" value = "6"</td> 
    <td><input type = "text" name = "ppp_sum_2" class="class_test_p" value = "7"</td>
    <td><input type = "text" name = "nnn_sum_3" class="class_test_n" value = "8"</td>
</tr>
</table>
</form>

Как просуммировать каждый столбец из второй таблицы (таблица значений) учитывая, что атрибут "name" каждого input -а содержит в себе id input-ового элемента для подсчета суммы ?

laimas 12.12.2019 18:25

<td><input type = "text" name = "zzz_sum_1" class="class_test_n" value = "1"</td> - ошибка, должно быть "><


Цитата:

Сообщение от Asew
учитывая, что атрибут "name" каждого input -а содержит в себе id input-ового элемента для подсчета суммы

Они вообще не нужны.

var f = $('[name=View] input');

$.each(f.slice(3, -3), function(i, e) {
    f.eq(i).val(+e.value + +f.eq(i+6).val())
})

Asew 12.12.2019 18:37

Спасибо за корректировку. Но вопрос остается открытым...

laimas 12.12.2019 18:43

Что-то не понятно?

Asew 12.12.2019 18:56

вы задаете фиксированный размер массива, а если столбцов больше ?

laimas 12.12.2019 18:59

Цитата:

Сообщение от Asew
а если столбцов больше ?

Ну в общем то и это не будет проблемой. Произвольное только число столбцов или и строк может быть больше?

laimas 12.12.2019 22:05

var tbl = $('[name=View] table'),
    sum = tbl.first().find('input'),
    val = tbl.last().find('input'),
    k=val.length/sum.length; //добавить если любое количество колонок/строк

//если любое количество колонок
$.each(val.slice(0, sum.length), function(i, e) {
    sum.eq(i).val(+e.value + +val.eq(i+sum.length).val())
});

//если любое количество колонок/строк
for(var i=0; i<sum.length; ++i) {
   var v = 0;
   for(var j=0; j<k; ++j) v += +val.eq(i + j*sum.length).val();
   sum.eq(i).val(v); 
}


Часовой пояс GMT +3, время: 18:00.