我无法让.replace处理td元素。我已经尝试了丢失我发现的可变方法,但没有任何工作。
html:
<table>
<tr>
<td class="inv-amt">$567.98</td>
<td class="inv-amt">$345.23</td>
<td class="inv-amt">$211.09</td>
</tr>
</table>
js:
$(".inv-amt").each(function(){
$(this).text().replace("$", "");
});
最终目标是我想从td获取整数,所以我可以做类似的事情:
$(".inv-amt").each(function(){
if($(this).text() > 0){
//Do something
} else if($(this).text() < 0){
//Do something else
}
});
所以我需要剥离td的$,这样就不会导致NaN。我试过parseFloat但是无法让它工作。所以我实际上不需要更换,但它不起作用,所以我先尝试替换,然后比较文本。我还能做些什么呢?
答案 0 :(得分:5)
尝试这种方式:
问题是你实际上并没有替换DOM中的文本。相反,您只是替换文本值。您可以使用.text()
功能根据您的情况重置值。
$(".inv-amt").each(function(){
$(this).text(function (_, oldValue){
return oldValue.replace("$", "");
})
});
您可以直接使用.text()
来替换它。无需迭代。
$(".inv-amt").text(function (_, oldValue){
return oldValue.replace("$", "");
});
答案 1 :(得分:3)
试试这个:
$(this).text($(this).text().replace("$", ""));
答案 2 :(得分:2)
您必须在完成替换后实际设置文本:
var newText = $(this).text().replace("$", "");
$(this).text(newText);
答案 3 :(得分:1)
replace函数返回文本,实际上并不编辑文本。
试试这段代码:
$(".inv-amt").each(function(){
$(this).text($(this).text().replace("$", ""));
});