使用 JQuery 将内部 html 替换为 html time 的值



我正在使用一个包含文本和整数值的HTML表结构。 我的目标是确定哪些单元格包含整数值,并将它们替换为其值乘以 -1。 例如:

今年 | 5 | 4 | -12

去年 | 2 | 2 | 20

将更新为:

今年 | -

5 | -4 | 12

去年 | -2 | -2 | -20

理想情况下,我会用一行JavaScript/jQuery来完成这一点。 我正在使用的行是:

$(".value-cell").filter(function( index ) {return $.isNumeric($(this).text());}).text(parseFloat($(this).text())*-1);

但是,此行只是用NaN填充单元格。 我已经尝试了几种变体,但无法完成我正在寻找的东西。

更新:

我应该注意,过滤正在按预期工作并击中我想要的细胞。我相信问题在于访问文本分配中的$(this),但是,我不确定如何访问 HTML 元素的文本以乘以 -1。

将函数传递给.text(),使其对每个元素进行操作。

$(".value-cell").filter(function(index) {
return $.isNumeric($(this).text());
}).text(function(i, txt) {
return parseFloat(txt) * -1;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class=value-cell>abc</div>
<div class=value-cell>123</div>

如果在此之后不需要过滤集,则可以摆脱.filter()调用并使新值成为条件。

$(".value-cell").text(function(i, txt) {
return $.isNumeric(txt) ? parseFloat(txt) * -1 : txt;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class=value-cell>abc</div>
<div class=value-cell>123</div>

当然,没有jQuery依赖关系的现代语法解决方案可能如下所示:

for (const el of document.querySelectorAll(".value-cell")) {
const t = el.textContent;
el.textContent = !t || isNaN(t) ? t : +t;
}
<div class=value-cell>abc</div>
<div class=value-cell>123</div>