1

動的に作成されたテーブルがあり、テーブルの 2 番目の列を合計する必要があります。私は合計として0を取得し続けます。私は何か間違ったことをしていますか?

これは、テーブルが作成された後、合計ボタンをクリックすると呼び出される関数です。

 function bukkake(){



    var sum = 0;
    $('.teedee td').eq(1).each(function(){
    sum += $(this).val();
    });
    $('#sum_result').append("The sum is: " + sum)



 }

これは、テーブルを作成するコードの一部です。

$.getJSON("nutritional_value.php?value=" + encodeURI(value), function (data) {
var ttr = $("<tr />");   
$.each(data, function(k, v){
var store_1 = v * (parseFloat(uneseno, 10) / 100);
var xstore_1 = store_1.toFixed(2);

$("<td class='teedee'></td>").text(k=='name' ? v : xstore_1).appendTo(ttr);



 });

 $("#tejbl").append(ttr);
 }); 
4

1 に答える 1

2

まず、間違ったセレクターを使用しています

  $('.teedee td').eq(1).each(function(){ // You are trying to select
                                         // a td inside a class

察するに

$('td.teedee').eq(1).each(function(){  // But td is the one with the class

2番

Atdは というプロパティを持たない.val()

.text()その中のテキストをターゲットにしたい場合は、代わりに使用してください

三番

$('td.teedee').eq(1) // Targets only 1 element with index 1

第4

parseInt数値に変換するために使用します。

sum += parseInt($(this).text(), 10);

そうしないと、技術的には代わりに文字列を追加することになります。まず数値に変換してから加算します。

編集..

まずparse the text数値でないかチェック

var sum = 0;
$('tr').each(function() {
    $('td.teedee', this).eq(1).each(function () {
       var value = parseInt($(this).text(), 10);

       sum += isNaN(value) ? 0 : value;
    });
 });
$('#sum_result').append("The sum is: " + sum)
于 2013-06-03T20:46:37.107 に答える