动态计算并显示所有 tr 元素的总和
Dynamically calculate and display the sum of all tr element
JsFiddle
在我的情况下,每当用户输入数量字段的值时,我正在尝试动态计算和显示所有tr
元素的总和。
有人可以修复我的代码中的错误吗?
Jquery代码:
$("table input").on('change blur input', function() {
var val = this.value;
$(this).closest('tr').find('td:eq(4)').text(function(){
return (+$.trim($(this).siblings(':eq(3)').text()) * +val)
})
$('table tr td:nth-of-type(5)').each(function() {
sum += parseFloat($(this).text().slice(1));
});
$('.sum').text(sum);
});
- 您需要声明
sum
变量
当 - 没有文本时,
parseFloat($(this).text().slice(1))
将返回NaN
- 为什么要使用
slice(1)
?你需要解析全文。
所以
$("table input").on('change blur input', function () {
var val = this.value;
var sum = 0;
$(this).closest('tr').find('td:eq(4)').text(function () {
return (+$.trim($(this).siblings(':eq(3)').text()) * +val)
});
$('table tr td:nth-of-type(5)').each(function () {
sum += parseFloat($(this).text()) || 0;
});
$('.sum').text(sum);
});
http://jsfiddle.net/KrN7Z/18/演示
更好的方法
但是你应该给HTML中的一些元素一些类,它会大大简化一切。
<tr>
<td>someno</td>
<td>
<input type="text" placeholder="Some Name" />
</td>
<td>
<input type="text" class="quantity" placeholder="Quantity" />
</td>
<td class="price">50</td>
<td class="total"></td>
<td>something</td>
</tr>
和
$("table input").on('change blur input', function () {
var row = $(this).closest('tr'),
quantity = +row.find('.quantity').val(),
price = parseFloat(row.find('.price').text());
row.find('.total').text(quantity * price);
var sum = 0;
$('.total').each(function () {
sum += parseFloat($(this).text()) || 0;
});
$('.sum').text(sum);
});
http://jsfiddle.net/KrN7Z/22/演示
试试这个。您需要声明总和,并且需要处理 NaN 案例。
var sum = 0;
$('table tr td:nth-of-type(5)').each(function() {
var m = parseFloat($(this).text().slice(1));
if (!isNaN(m)) {
sum += m;
}
});
console.log(sum);
如前所述,您需要声明sum
,处理NaN
情况并更新每个输入的总值。试试这个:
$("table input").on('change blur input', function () {
var val = this.value;
var sum = 0;
$(this).closest('tr').find('td:eq(4)').text(function () {
return (+$.trim($(this).siblings(':eq(3)').text()) * +val);
});
$('table tr td:nth-of-type(5)').each(function () {
var k = parseFloat($(this).text());
sum += isNaN(k)?0:k;
$('.sum').text(sum);
});
});
相关文章:
- 用Javascript添加带有#text的tr元素
- react-让一个元素返回两个相邻的<tr>标签
- 如何在遍历表和添加新元素时获得tr的索引
- TR 元素上的 UI-sref 不会在新选项卡中打开
- 如何在点击tr的td后获取tr的id's元素
- Javascript没有't隐藏tr元素
- 正在获取循环中td元素的tr id
- 添加<tr>元素到动态表,动态不刷新页面,php-jquery
- Jquery:选择tr元素的第二个td
- 从 jQuery 中的子元素获取父 tr 元素
- 表中的 tr 元素正在丢弃应用于它的顶部 CSS 属性
- 动态计算并显示所有 tr 元素的总和
- 选择任何 TR 和/或 TD 并隐藏元素
- 单击行中的按钮时获取 HTML TR 的元素
- 单击时获取TR的所有TD元素
- 如何检查两个<tr>元素在忽略某些内部<td>elmentes
- 如果选中复选框,则复制TR元素并附加到外部源
- 隐藏tr元素,以防在其中单击
- 过滤tr out中未显示的td元素
- 如何获得td元素相对于父元素tr元素的偏移量