我有一个动态创建的表,我需要对表的第二列求和。我总是得到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);
});
答案 0 :(得分: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
<强>第二强>
td
没有名为.val()
如果您想要定位其中的文字,请使用.text()
<强>第三强>
$('td.teedee').eq(1) // Targets only 1 element with index 1
<强>四强>
使用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)