#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть несколько таблиц, и я хочу получить общую сумму для каждой таблицы. Пожалуйста, посмотрите демонстрацию в fiddle.
var total = 0;
$("table").each(function(i){
total = $('.a', this).text() || 0;
console.log( 'total: ' total );
$("#subtotal", this).text( total );
//console.log( '-' $('.a', this).text() );
});
Комментарии:
1.
$("table tr")
не$('table')
2. Спасибо за ответ. первая таблица верна, но во второй таблице она также суммирует общую сумму в первой таблице
3. @Mohamed-Yousef Я изменил идентификатор на класс. Все еще получаем тот же результат.
4. Пожалуйста, добавьте свой HTML.
Ответ №1:
Вам нужно переместиться var total=0
внутрь цикла таблицы, чтобы он сбрасывался для каждой таблицы
Затем вам нужно выполнить цикл по каждой ячейке, чтобы получить текст отдельной ячейки.
Проблема с получением всего $('.a', this).text()
заключается в том, что он объединяет все элементы текста в одну строку, поэтому вы видите такие числа, как "1357"
как общее в первой таблице
Наконец, вы не можете повторять идентификаторы на странице, поэтому измените промежуточный итог на класс
$("table").each(function(i) {
var total = 0;
$('.a', this).each(function() {
total = $(this).text() || 0;
});
$(".subtotal", this).text(total);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="a">1</td>
<td>2</td>
</tr>
<tr>
<td class="a">3</td>
<td>4</td>
</tr>
<tr>
<td class="a">5</td>
<td>6</td>
</tr>
<tr>
<td class="a">7</td>
<td>8</td>
</tr>
<tr>
<td class="subtotal"></td>
</tr>
</table>
<hr>
<table>
<tr>
<td class="a">1</td>
<td>2</td>
</tr>
<tr>
<td class="a">3</td>
<td>4</td>
</tr>
<tr>
<td class="a">5</td>
<td>6</td>
</tr>
<tr>
<td class="a">7</td>
<td>8</td>
</tr>
<tr>
<td class="a">9</td>
<td>10</td>
</tr>
<tr>
<td class="a">11</td>
<td>12</td>
</tr>
<tr>
<td class="subtotal"></td>
</tr>
</table>
Комментарии:
1. хм.. Я совершенно забыл о сбросе общей суммы 🙂
2. @charlietfl ВАУ! Это решает мой вопрос. Большое вам спасибо.
3. и @Mohamed-Yousef Спасибо
4. @charlietfl Извините, я не могу принять ваш ответ, потому что у меня менее 15 репутаций.
5. @Juan … не беспокойтесь о недостатках. В будущем, однако, поможет включить достаточное количество рассматриваемого html, чтобы он был автономным