计算每个 tr 中的平均 td
Calculate average td in each tr
我想用每个 table 行中的输入 .toan
、.ly
、.hoa
计算平均值 class='dtb'
。
问题:它只是计算第一个table行,然后将结果放在下面的其他行中,而不是在每个table行中计算。
$(document).ready(function () {
$('#outputtable > tbody > tr').each(function () {
var toan = parseInt($('.toan').html());
var ly = parseInt($('.ly').html());
var hoa = parseInt($('.hoa').html());
var dtb = ((toan + ly + hoa) / 3);
$(this).find('.dtb').html(dtb.toFixed(1));
});
});
您需要在行
中找到每个输入 classes 的实例
$('.toan').html()
将始终 return 在整个页面中找到的 class 第一个元素的值
改为使用find()
var toan = parseInt($(this).find('.toan').html());
您可能想从这里更改:
$('#outputtable > tbody > tr').each(function () {
var tr = $(this);
var toan = +tr.find('.toan').text();
var ly = +tr.find('.ly').text();
var hoa = +tr.find('.hoa').text();
var dtb = (toan + ly + hoa) / 3;
tr.find('.dtb').html(dtb.toFixed(1));
});
在 each 函数中使用 $(this)
(在本例中),它将分配给当前的 tr
元素。从这个元素中,您可以找到一个元素 class,名称为 toan
- ly
- hoa
.
要获取每个td
标签内的文本,你只需要使用.text()
方法(不需要使用.html()
方法)。
要将字符串转换为数字(在您的情况下),您可以使用
+$(this).find('.toan').text();
无需使用parseInt
方法。可读性更好。
我看到了你的 fiddle 代码,
更改此附加 table 行的代码
$("#outputtable").find("tbody:last").append("<tr><td>"+ stt +"</td><td class='ten'>"+_ten+"</td><td class='toan'>"+_toan+"</td><td class='ly'>"+_ly+"</td><td class='hoa'>"+_hoa+"</td><td class='dtb'>?</td></tr>");
收件人:
$("#outputtable").append("<tr><td>"+ stt +"</td><td class='ten'>"+_ten+"</td><td class='toan'>"+_toan+"</td><td class='ly'>"+_ly+"</td><td class='hoa'>"+_hoa+"</td><td class='dtb'>?</td></tr>");
还有这段平均计算代码:
$(document).ready(function () {
$('#outputtable > tbody > tr').each(function () {
var toan = parseInt($(this).find('.toan').html());
var ly = parseInt($(this).find('.ly').html());
var hoa = parseInt($(this).find('.hoa').html());
var dtb = ((toan + ly + hoa) / 3);
$(this).find('.dtb').html(dtb.toFixed(1));
});
});
收件人:
$("#tinhdtb").on('click', () => {
$('#outputtable > tbody > tr').each(function () {
debugger;
var toan = parseInt($(this).find('.toan').html());
var ly = parseInt($(this).find('.ly').html());
var hoa = parseInt($(this).find('.hoa').html());
var dtb = ((toan + ly + hoa) / 3);
$(this).find('.dtb').html(dtb.toFixed(1));
});
});
我想用每个 table 行中的输入 .toan
、.ly
、.hoa
计算平均值 class='dtb'
。
问题:它只是计算第一个table行,然后将结果放在下面的其他行中,而不是在每个table行中计算。
$(document).ready(function () {
$('#outputtable > tbody > tr').each(function () {
var toan = parseInt($('.toan').html());
var ly = parseInt($('.ly').html());
var hoa = parseInt($('.hoa').html());
var dtb = ((toan + ly + hoa) / 3);
$(this).find('.dtb').html(dtb.toFixed(1));
});
});
您需要在行
中找到每个输入 classes 的实例$('.toan').html()
将始终 return 在整个页面中找到的 class 第一个元素的值
改为使用find()
var toan = parseInt($(this).find('.toan').html());
您可能想从这里更改:
$('#outputtable > tbody > tr').each(function () {
var tr = $(this);
var toan = +tr.find('.toan').text();
var ly = +tr.find('.ly').text();
var hoa = +tr.find('.hoa').text();
var dtb = (toan + ly + hoa) / 3;
tr.find('.dtb').html(dtb.toFixed(1));
});
在 each 函数中使用 $(this)
(在本例中),它将分配给当前的 tr
元素。从这个元素中,您可以找到一个元素 class,名称为 toan
- ly
- hoa
.
要获取每个td
标签内的文本,你只需要使用.text()
方法(不需要使用.html()
方法)。
要将字符串转换为数字(在您的情况下),您可以使用
+$(this).find('.toan').text();
无需使用parseInt
方法。可读性更好。
我看到了你的 fiddle 代码,
更改此附加 table 行的代码
$("#outputtable").find("tbody:last").append("<tr><td>"+ stt +"</td><td class='ten'>"+_ten+"</td><td class='toan'>"+_toan+"</td><td class='ly'>"+_ly+"</td><td class='hoa'>"+_hoa+"</td><td class='dtb'>?</td></tr>");
收件人:
$("#outputtable").append("<tr><td>"+ stt +"</td><td class='ten'>"+_ten+"</td><td class='toan'>"+_toan+"</td><td class='ly'>"+_ly+"</td><td class='hoa'>"+_hoa+"</td><td class='dtb'>?</td></tr>");
还有这段平均计算代码:
$(document).ready(function () {
$('#outputtable > tbody > tr').each(function () {
var toan = parseInt($(this).find('.toan').html());
var ly = parseInt($(this).find('.ly').html());
var hoa = parseInt($(this).find('.hoa').html());
var dtb = ((toan + ly + hoa) / 3);
$(this).find('.dtb').html(dtb.toFixed(1));
});
});
收件人:
$("#tinhdtb").on('click', () => {
$('#outputtable > tbody > tr').each(function () {
debugger;
var toan = parseInt($(this).find('.toan').html());
var ly = parseInt($(this).find('.ly').html());
var hoa = parseInt($(this).find('.hoa').html());
var dtb = ((toan + ly + hoa) / 3);
$(this).find('.dtb').html(dtb.toFixed(1));
});
});