我正在尝试对 <td>
内的所有 html 进行求和。 name='gross_val' 的元素。我有以下<td>
元素:
<tr><td name="gross_val" align="right" title="gross_val1" ></td></tr>
<tr><td name="gross_val" align="right" title="gross_val2" ></td></tr>
<tr><td name="gross_val" align="right" title="gross_val3" ></td></tr>
<tr><td name="gross_val" align="right" title="gross_val4" ></td></tr>
<tr><td name="gross_val" align="right" title="gross_val5" ></td></tr>
所有这些<td>
元素已动态填充其中的值。其中一些<td>
元素的总值(value)为 <tr>
它们在里面,其中一些还没有有人居住。我只想总结那些 <td>
已填充总值(value)的元素。然后在另一个 <td>
中显示该值元素。
我为此编写了以下 JQuery 和 Javascript:
function computeGrossValTotal() {
var x = $("td[name='gross_val']");
var gValues = [];
$(x).each(function(index) {
// this line takes up the raw html inside of that td element
var valc = $(this).html();
// this line strips all the currency and other characters and symbols
// off the 'valc' variable and makes it in an integer format
var val = Number(WC(valc));
if (val) {
gValues.push(val);
}
});
// this line adds the values inside of gValues array
sum = Number(gValues.reduce(add, 0));
alert(sum);
}
$(document).on("keyup", function() {
computeGrossValTotal();
});
function WC(x) { return Number(x.match(/(?:\d+|\.)/g).join("")); }
function add(a, b) {return a + b;}
我面临的问题是 sum 不会发出警报,除非所有 <td>
元素里面有一些 html。我无法从方程中删除空的 td 元素。请有人指导我如何仅对<td>
求和内部具有一定值(value)的元素。
最佳答案
WC
需要检查 x.match()
是否找到了某些内容,因此它不会在 null< 上调用
.join
/
function WC(x) {
var nums = x.match(/(?:\d+|\.)/g);
if (nums) {
return Number(nums.join(''));
} else {
return null;
}
}
关于javascript - 如何在 Javascript 或 JQuery 中对非空 <td> 元素的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563329/