只有超过 3 位数的数字才显示 INR 数字

Display INR number only if it's a number with more than 3 digits

JSFiddle 演示:https://jsfiddle.net/bukh7jwL/

我有一个 table 有文字和数字,但面临 2 个问题。

  1. 它禁用所有文本值并将其显示为 ₹NaN!!
  2. 如果数字小于 100 或 3 位数,我想避免应用 JS。

我该怎么做?

HTML:

<center>
    <p>
      <table>
        <tr><td>This is amazing</td></tr>
        <tr><td>92834</td></tr>
        <tr><td>33</td></tr>
        <tr><td>What?</td></tr>
      </table>
</center>

JS:

$('td').each(function() {
  var monetary_value = $(this).text();
  var i = new Intl.NumberFormat('en-IN', {
    style: 'currency',
    currency: 'INR'
  }).format(monetary_value);
  $(this).text(i);
});

我已将以下语句添加到您的代码中,以检查我们是否要 运行 NumberFormat

$.isNumeric(monetary_value) && (monetary_value < 100 || monetary_value.length == 3)

$.isNumeric(monetary_value) 检查它是否是一个数字。

(monetary_value < 100 || monetary_value.length == 3) 检查值是否小于 100 或长度是否为 3 个字符。

$('td').each(function() {
  var monetary_value = $(this).text();
  if ($.isNumeric(monetary_value) && (monetary_value < 100 || monetary_value.length == 3)) {
    var i = new Intl.NumberFormat('en-IN', {
      style: 'currency',
      currency: 'INR'
    }).format(monetary_value);
  }
  $(this).text(i);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<center>
    <p>
      <table>
        <tr><td>This is amazing</td></tr>
        <tr><td>92834</td></tr>
        <tr><td>33</td></tr>
        <tr><td>What?</td></tr>
      </table>
</center>

你必须首先检查字符串是否为数字,然后你需要检查数字是否为 3 或更多。之后使用 toLocaleString() 该数字将转换为 INR 货币

function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

$('td').each(function() {
  var monetary_value = $(this).text();
  if(isNumeric(monetary_value)) {
    let moneyVal = parseFloat(monetary_value);
    if( (moneyVal < 100 || moneyVal.toString().length == 3) ){
    var i = moneyVal.toLocaleString('en-IN', {
    maximumFractionDigits: 2,
    style: 'currency',
    currency: 'INR'
});
    $(this).text(i);
    
    }
  }
});
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<center>
    <p>
      <table>
        <tr><td>This is amazing</td></tr>
        <tr><td>92834</td></tr>
        <tr><td>33</td></tr>
        <tr><td>What?</td></tr>
      </table>
</center>