只有超过 3 位数的数字才显示 INR 数字
Display INR number only if it's a number with more than 3 digits
JSFiddle 演示:https://jsfiddle.net/bukh7jwL/
我有一个 table 有文字和数字,但面临 2 个问题。
- 它禁用所有文本值并将其显示为 ₹NaN!!
- 如果数字小于 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>
JSFiddle 演示:https://jsfiddle.net/bukh7jwL/
我有一个 table 有文字和数字,但面临 2 个问题。
- 它禁用所有文本值并将其显示为 ₹NaN!!
- 如果数字小于 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>