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

时间:2013-05-27 22:51:21

标签: 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>

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但是无法让它工作。所以我实际上不需要更换,但它不起作用,所以我先尝试替换,然后比较文本。我还能做些什么呢?

4 个答案:

答案 0 :(得分:5)

尝试这种方式:

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

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

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

$(".inv-amt").text(function (_, oldValue){
        return oldValue.replace("$", "");
});

Demo

答案 1 :(得分:3)

试试这个:

$(this).text($(this).text().replace("$", ""));

答案 2 :(得分:2)

您必须在完成替换后实际设置文本:

var newText = $(this).text().replace("$", "");
$(this).text(newText);

答案 3 :(得分:1)

http://jsfiddle.net/h3mnj/1/

replace函数返回文本,实际上并不编辑文本。

试试这段代码:

$(".inv-amt").each(function(){
    $(this).text($(this).text().replace("$", "")); 
});