我想知道如何输出用户想要在我的货币转换器中隐藏金额的不同货币符号?例如,如果我想在新金额(即 20 英镑的欧元价值(的最终输出中将 20 英镑转换为欧元,我如何才能输出欧元符号?最终输出只是数字,我想要在最终值金额输出前面有一个货币符号,我想知道如何为输出金额的每种货币执行此操作。我正在从 API 导入实时汇率,因此,如何导入汇率但添加货币符号?
代码笔
JAVASCRIPT
// Fetch exchange rate data from api
$.getJSON("https://api.fixer.io/latest?base=ZAR", function(data) {
var currencies = [];
$.each(data.rates, function(currency, rate) {
// Currency options dropdown menu
currencies.push("<option id='" + currency.toLowerCase() + "' value='" + rate + "' >" + currency + "</option>");
});
$(".currency-list").append(currencies);
})
//Calculate and output the new amount
function exchangeCurrency() {
var amount = $(".amount").val();
var rateFrom = $(".currency-list")[0].value;
var rateTo = $(".currency-list")[1].value;
if (amount == undefined || rateFrom == "--Select--" || rateTo == "--Select--") {
$(".results").html("0");
} else {
$(".results").html((amount * (rateTo * (1 / rateFrom))).toFixed(2));
}
}
您可以使用区域设置字符串
var number = 123456.789;
// request a currency format
console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })); // → 123.456,79 €
var currency = document.getElementById('currency');
var Euro = number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' });
currency.innerHTML = Euro;
<p id='currency'></p>
这是我的jsfiddle:
https://jsfiddle.net/646m7905/
虽然您可以在支持 Intl 对象的情况下使用 toLocaleString,但您也可以使用一个小的查找表(例如 {euro:'€',pound:'£', ...}
( 的符号和格式手动为货币。
/*
https://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript/149099#149099
decimal_sep: character used as deciaml separtor, it defaults to '.' when omitted
thousands_sep: char used as thousands separator, it defaults to ',' when omitted
*/
Number.prototype.toMoney = function(decimals, decimal_sep, thousands_sep)
{
var n = this,
c = isNaN(decimals) ? 2 : Math.abs(decimals),
d = decimal_sep || '.',
t = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
sign = (n < 0) ? '-' : '',
i = parseInt(n = Math.abs(n).toFixed(c)) + '',
j = ((j = i.length) > 3) ? j % 3 : 0;
return sign + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(d{3})(?=d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');
}
var currencySymbol = {euro:'€',pound:'£',dollar:'$'};
var amount = 123546.23
document.getElementById('moneyAmount0').innerHTML = currencySymbol.euro + amount.toMoney();
document.getElementById('moneyAmount1').innerHTML = currencySymbol.euro + amount.toMoney(2,',','.');
<p>Amount (English): <span id="moneyAmount0"></span></p>
<p>Amount (European): <span id="moneyAmount1"></span></p>
请注意,toLocaleString 的结果在很大程度上仍然依赖于实现,如果对选项的支持不可用,您不知道它会回退到什么。
.toMoney 函数来自评分最高的答案 如何在 JavaScript 中将数字格式化为货币?
你有办法获取货币名称(即"欧元"、"美元"、"英镑"等(吗?如果是这样,只需执行以下操作:
currencySymbols = {euros:'€',dollars:'$',pounds:'£'};
finalText = currencySymbols[currencyText.toLowerCase()] + currencyValue;
那会给你一些类似的东西 $42
或£6.38
.