如何将表值添加为货币?

时间:2019-03-26 20:39:41

标签: javascript html-table bootstrap-4 sum

不是Java方面的佼佼者,我仍在学习,但是...

我正在尝试在Bootstrap 4表中计算值的总和,并将输出格式设置为货币。目前,我可以使用.toFixed(2)选项添加数字,但这不会提供所需的USD逗号格式($#,###。##)。我需要能够对要添加的列中的数据进行格式化,并将总结果格式化为美元货币。

我已经能够使用.toFixed(2)添加值(如我已经提到的那样),并尝试使用.toLocaleString,但这没有效果。

test_job:
  stage: test
  before_script:
    - echo "FAIL" > .job_status
  script:
    - exit 1
    - echo "SUCCESS" > .job_status
  after_script:
    - echo "$(cat .job_status)"

我需要将.row_data类的值求和并输出到.totalRow类,格式为美元货币。例如,对于我的代码,输出将为<table id="sum__table"> <tbody> <tr> <td>Some name</td> <td class="row_data">5000.00</td> <td>Some more info</td> </tr> <tr> <td>Some Name 2</td> <td class="row_data">6000.00</td> <td>Some more info</td> </tr> </tbody> </table> <div class="totalRow"></div> <script> var sum = 0, sumElements = document.querySelectorAll('#sum__table .row_data'); Array.prototype.forEach.call(sumElements, function (el) { sum += parseFloat(el.innerText); }); $('div.totalRow').each(function(el) { $(this).html("$" + sum.toFixed(2)); }); </script> ,但我需要输出为$11000.00

我该如何实现?

编辑:我已经阅读了链接的“可能重复项”,但没有找到帮助,但这可能是我对Java语言的无知。 Regex解决方案似乎可行,但是我不确定如何在函数中使用它。

1 个答案:

答案 0 :(得分:1)

使用:number.toLocaleString()与可选的options参数对象一起设置货币和货币显示。

var number = 123456.789;
console.log(number.toLocaleString('en-US', { style: 'currency', currency: 'USD' }));

因此,在您的示例中,我们可以收集所有需要格式化的表格单元并对其进行格式化:

// Get all the "row_data" elements into an array
let cells = Array.prototype.slice.call(document.querySelectorAll(".row_data"));

// Loop over the array
cells.forEach(function(cell){
  // Convert cell data to a number, call .toLocaleString()
  // on that number and put result back into the cell
  cell.textContent = (+cell.textContent).toLocaleString('en-US', { style: 'currency', currency: 'USD' });
});
.row_data { text-align:right; font-weight:bold; color:maroon; }
<table id="sum__table">
  <tbody>
    <tr>
      <td>Price 1: </td>
      <td class="row_data">5000.006</td>
      <td>Some more info</td>
    </tr>
    <tr>
      <td>Price 2: </td>
      <td class="row_data">62548000</td>
      <td>Some more info</td>
    </tr>
  </tbody>
</table>