2011-01-26 2 views
1

У меня есть таблица с рядами, как это:Сложение чисел в таблице

<tr> 
    <th width="30"></th> 
    <th width="30">Time</th> 
    <th>Description</th> 
</tr> 
<tr> 
    <td><a href="#" class="edit">edit</a></td> 
    <td class="time">2.50</td> 
    <td>I did this, and also that, then a little of something else.</td> 
</tr> 
<tr> 
    <td><a href="#" class="edit">edit</a></td> 
    <td class="time">1.50</td> 
    <td>Another description of time.</td> 
</tr> 
<tr> 
    <td><a href="#" class="edit">edit</a></td> 
    <td class="time">1.50</td> 
    <td>Yet one more item entered.</td> 
</tr> 
<tr class="total"> 
    <td><strong>Total:</strong></td> 
    <td><strong>[calculate total here]</strong></td> 
    <td>&nbsp;</td> 
</tr> 

Я использую JQuery и как часть функции, которая происходит при добавлении времени, мне нужно добавить все цифры в ячейки td.time. Но для моей жизни я не так хорош в написании петель и не могу понять.

Мне просто нужен код для прохождения через все ячейки td.time и добавления номеров вверх. Как только у меня будет общее количество, я могу обработать его вставить в [рассчитать итоговое значение здесь] spot.

Спасибо!

ответ

1

Выберите элементы, и использовать метод each в цикле им:

var tot = 0; 
$('td.time').each(function(){ 
    tot += parseFloat($(this).text()); 
}); 
+0

Perfect. Благодаря! – Ben

0

Вы можете использовать :nth-child(2n) пройти через вторые пункты всех строк таблицы ...

var total = 0.0; 
$('table tr td:nth-child(2n)').each(function(){ 
     val = parseFloat($(this).html()); 
     if (val > 0)total += val; 
}); 
$('#result').html(total); 

или так ваши столбцы времени являются классами одинаковыми, вы можете даже ...

var total = 0.0; 
$('.time').each(function(){ 
     val = parseFloat($(this).html()); 
     if (val > 0)total += val; 
}); 
$('#result').html(total); 

http://jsfiddle.net/WsSVQ/3/

0

если таблица имеет ID = "TESTTABLE" и TD общее время ид = "Total_time", то

var total = 0;
$('#TestTable td.time').each(function(index) {
total = total + parseFloat(this.html());
});
$('#total_time').html(total);

0

$('td[class*="time"]')

Это выбирает все TD-теги с классом " время ", если я прав.
Возможно, это то, что вы хотите использовать?

+0

Он выбирает все ячейки, в которых класс * содержит * «время». Он также будет включать, например, ''. – Guffa