首页 > 解决方案 > 获取每个 TD,然后将其格式化为货币

问题描述

我对 JS 很陌生,在通过网络、文档、朋友和其他关于 stackoverflow 的问题进行搜索之后,我已经得到了这一点。现在我无法通过它。

$(document).ready(function() {
  var $table = $("table.valores");

  if ($table.length > 0) {
    var ValorTh = $("th.header:contains('Valor')");
    var ValorColumnIndex = $(ValorTh).index();
    var Valor_rows = $($table).find('tr');

      $(Valor_rows).each(function() {
      $(this).find('td').eq(ValorColumnIndex).toLocaleString('pt-BR',{style:'currency', currency: 'BRL'});
    });

  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="valores">
<thead><th class="header">Valor</th></thead>
<tbody>
<tr>
<td>15.00</td>
</tr>
<tr>
<td >16.00</td>
</tr>
<tr>
<td >17.00</td>
</tr>
<tr>
<td >18.00</td>
</tr>
<tr>
<td >19.00</td>
</tr>
<tr>
<td >20.00</td>
</tr>

</tbody>
</table>

我无法使以下内容正常工作并正确格式化 td 的值:C

toLocaleString('pt-BR',{style:'currency',  currency: 'BRL'});

标签: javascriptjquery

解决方案


您需要实际设置tds 的内容。现在,您无需更改元素的内容。尝试这个:

$(document).ready(function() {
  var $table = $("table.valores");

  if ($table.length > 0) {
    var ValorTh = $("th.header:contains('Valor')");
    var ValorColumnIndex = $(ValorTh).index();
    var Valor_rows = $($table).find('tr');

      $(Valor_rows).each(function() {
        var $td = $(this).find('td').eq(ValorColumnIndex);
        var formatted = Number($td.text()).toLocaleString('pt-BR', {style:'currency', currency: 'BRL'});
        $td.text(formatted); // <-- here, you need to set the value
      });

  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="valores">
<thead><th class="header">Valor</th></thead>
<tbody>
<tr>
<td>15.00</td>
</tr>
<tr>
<td >16.00</td>
</tr>
<tr>
<td >17.00</td>
</tr>
<tr>
<td >18.00</td>
</tr>
<tr>
<td >19.00</td>
</tr>
<tr>
<td >20.00</td>
</tr>

</tbody>
</table>


推荐阅读