为什么.text().replace()不能处理td元素?(的jsfiddle)

o_O*_*o_O 0 javascript jquery replace html-table

我不能让.replace来处理td元素.我试过丢失我发现的可变方法,但没有任何工作.

http://jsfiddle.net/h3mnj/

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>
Run Code Online (Sandbox Code Playgroud)

js:

$(".inv-amt").each(function(){
    $(this).text().replace("$", "");
});
Run Code Online (Sandbox Code Playgroud)

最终目标是我想从td获取整数,所以我可以做类似的事情:

$(".inv-amt").each(function(){
  if($(this).text() > 0){
    //Do something
  } else if($(this).text() < 0){
    //Do something else
  }
});
Run Code Online (Sandbox Code Playgroud)

所以我需要剥离td中的$,这样就不会导致NaN.我试过parseFloat但是无法让它工作.所以我实际上不需要更换,但它不起作用,所以我先尝试替换,然后比较文本.我还能做些什么呢?

PSL*_*PSL 5

试试这种方式:

问题是您实际上并没有替换DOM中的文本.相反,您只是替换文本值.您可以.text()根据条件使用该功能重置值.

$(".inv-amt").each(function(){
    $(this).text(function (_, oldValue){
        return oldValue.replace("$", "");
    })
});
Run Code Online (Sandbox Code Playgroud)

您可以直接使用.text()它来替换它.无需迭代.

$(".inv-amt").text(function (_, oldValue){
        return oldValue.replace("$", "");
});
Run Code Online (Sandbox Code Playgroud)

演示