jQuery сумма всего текста класса в виде чисел - PullRequest
0 голосов
/ 16 февраля 2012

Я хочу суммировать весь текст в виде чисел внутри класса, называемого «отправлено», но когда я предупреждаю приведенный ниже код, он выдает ноль:

var sum = 0;            
var thedate = $(".date:contains('15th February 2012')");

   $(thedate).each(function() {              
    var sents = $(this).next('.sent').text();

    var sentsnumb = parseFloat(sents);

        sum += Number($(sentsnumb));

});
    alert(sum);

Вот мой HTML:

<tr>
   <td class="date">15th February 2012</td>
   <td class="sent"> 5</td>
</tr>
<tr>
   <td class="date">15th February 2012</td>
   <td class="sent"> 5</td>
</tr>
<tr>
   <td class="date">15th February 2012</td>
   <td class="sent"> 10</td>
</tr>
<tr>
   <td class="date">15th February 2012</td>
   <td class="sent"> 10</td>
</tr>

Желаемым выводом сверху будет число «30».

Ответы [ 3 ]

5 голосов
/ 16 февраля 2012

Попробуйте следующим образом: -

var sum = 0;            
var thedate = $(".date:contains('15th February 2012')");

   $(thedate).each(function() {              
    var sents = $(this).next('.sent').text();
    sum = sum + Number(sents);
});

alert(sum);​

Фактическая проблема с $ (sentsnumb) .Его следует заменить на sentsnumb

0 голосов
/ 16 февраля 2012

Вам не нужно пропускать все через функцию jQuery $.

var sum = 0;
var thedate = $(".date:contains('15th February 2012')");

thedate.each(function() { // `thedate` is already a jQuery object, no need for `$()`
    var sents = $(this).next('.sent').text();

    var sentsnumb = parseInt(sents, 10); // use parseInt if your values don't have decimals

    sum += sentsnumb; // sentsnum is a float, do not use `$()` (or Number)
});

alert(sum);​

Кроме того, вы не можете иметь <tr> теги вне <table>, убедитесь, что ваш HMTL действителен.

0 голосов
/ 16 февраля 2012

Попробуйте это:

var sum = 0;             
var thedate = $(".date:contains('15th February 2012')"); 

$(thedate).each(function() {               
   var sents = $(this).next('.sent').text(); 
   var sentsnumb = parseFloat(sents); 
   sum += sentsnumb; 
}); 
alert(sum); 
...