【发布时间】:2020-03-29 17:25:16
【问题描述】:
从 MDN 文档中,我可以使用
格式化货币值var locale = 'fr-CA';
var number = 123456.789;
var currency = 'EUR';
console.log(new Intl.NumberFormat(locale, { style: 'currency', currency: currency }).format(number));
// expected output: "123.456,79 €"
但是是否可以列出所有可用的本地货币?这个问题的重点是构建一个本地化的货币选择器,而不需要从第三方 URL 或模块中获取数据。
例如:
const localeEl = document.getElementById('locales');
const selectEl = document.getElementById('currencies');
const inputEl = document.getElementById('number');
const outputEl = document.getElementById('output');
// locales already provided from app
const locales = ['fr-CA', 'en-US', 'de-DE'];
// REQUIREMENT: retrieve all known currencies here
const currencies = ['CAD', 'USD', 'EUR'];
locales.forEach(locale => {
const optionEl = document.createElement('option');
optionEl.value = locale;
// OPTIONAL retrieve locale name (localized)
optionEl.text = locale;
localeEl.appendChild(optionEl);
});
currencies.forEach(currency => {
const optionEl = document.createElement('option');
optionEl.value = currency;
// OPTIONAL retrieve localized currency name here
optionEl.text = currency;
selectEl.appendChild(optionEl);
});
const updateOutput = () => {
const locale = localeEl.children[localeEl.selectedIndex].value;
const currency = selectEl.children[selectEl.selectedIndex].value;
const number = inputEl.value;
outputEl.innerHTML = new Intl.NumberFormat(locale, { style: 'currency', currency: currency }).format(number);
}
localeEl.addEventListener('change', updateOutput);
selectEl.addEventListener('change', updateOutput);
inputEl.addEventListener('change', updateOutput);
<select id="locales"></select>
<select id="currencies"></select>
<input type="number" id="number" />
<div id="output"></div>
【问题讨论】:
-
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 不知道为什么你不能把它们都包括在内,并根据你上面的做法进行参考。当您说本地化时,我想我不明白您的意思。您是指当前地理位置的本地,还是将它们全部嵌入到 javascript 代码中的本地?
-
本地化为法语,美元货币为
$US,而在英语中则为$。同样,法语中的CAD是$CA,英语中的CA$。
标签: javascript browser intl