2017-01-14 44 views
0

我試圖總結表內的文本值。以下是我嘗試基於行和類的警報總和結果

$(document).on("change", ".kd1", function() { 
 
\t \t \t \t \t var sum = 0; 
 
\t \t \t \t \t \t $('.kd1').each(function() { 
 
\t \t \t \t \t \t \t sum += Number($(this).closest('.kd1').val()); 
 
\t \t \t \t \t \t }) 
 
\t \t \t \t \t \t alert(sum); 
 
\t \t \t \t });
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
 

 
<table> 
 
\t <tr> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t </tr> 
 
\t 
 
</table>

現在,我能夠提醒它。 但是結果是每個tr的總和,所以我想分開每行的結果。我怎麼能做到這一點?在此先感謝

對不起,我的英語不好。

+0

請提供輸入和預期結果的一個例子。 – trincot

回答

1

的它似乎不是很人性化的在alert呈現資金索引。相反,您可以在表中添加另一列,並在其中顯示總和。

要計算每行的總和,只需在行上添加一個外部循環,然後計算該循環內部行的總和。我建議使用reduce來獲得總和,但這只是一個細節。看到它在這個片段的工作:

$(document).on("change", ".kd1", function() { 
 
    $('table tr').each(function() { 
 
     $('.sum', this).text(
 
      $('.kd1', this).get().reduce(function(sum, elem) { 
 
       return sum + +$(elem).val(); 
 
      }, 0) 
 
     ); 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
 
<table> 
 
\t <tr> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t \t <td class="sum"></td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t \t <td><input type="text" class="kd1"></td> 
 
\t \t <td class="sum"></td> 
 
\t </tr>  \t 
 
</table>

+0

謝謝,它的工作。只是爲了測試提醒。這部分'$('。sum',this).text'對我來說是新的。新問題=新知識。謝謝 – YVS1102

+1

確保理解'$()'的第二個參數:它指定了在哪些元素中應該應用選擇器(第一個參數) - 它限制了搜索。該元素可以是DOM元素,就像這裏,或者是一個jQuery表達式。請參閱[文檔](http://api.jquery.com/jquery/#jQuery-selector-context) – trincot

0

你可以把每個結果到一個數組,其中每一個索引是行

var currentRow=$(this).closest('tr'); 
var index=$('table tr').index(currentRow); 
sum[index]=0; 
$(currentRow).find('.kd1').each(function() { 
    sum[index] += Number($(this).val()); 
}) 
+0

嗯。如何提醒它? – YVS1102