2017-05-18 55 views
0

我想知道如何輸出用戶想要在我的貨幣轉換器中轉換金額的不同貨幣符號?例如,如果我想在20歐元的新金額的最終產出中將20英鎊兌換成歐元,我怎樣才能得到歐元符號?最終的輸出只是數字,我想要一個貨幣符號在最終價值量輸出前面,我想知道如何爲輸出量的每種貨幣做到這一點。我正在從API導入實時匯率,因此,如何導入匯率但添加貨幣符號?如何在最終交換值中輸出貨幣符號?

Codepen

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)); 
    } 
} 
+0

它不需要太多[*搜索*](https://www.google.com.au/search?q=HTML+entities+currency+symbol&rls=com.microsoft:en-us&ie=UTF -8&oe = UTF-8&startIndex =&startPage = 1&safe = active&gfe_rd = cr&ei = cSgeWbLfDOzDXvCZgYAC&gws_rd = ssl)查找貨幣符號的HTML實體列表,例如[*這裏*](https://websitebuilders.com/tools/html-codes/currency/)。 – RobG

回答

0

雖然可以使用的toLocaleString其中用於國際支持的對象是可用的,你也可以使用一個小的查找表(例如{euro:'&euro;',pound:'&pound;', ...})代碼和format as money手動。

/* 
 
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:'&euro;',pound:'&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功能是從收視率最高的答案How can I format numbers as money in JavaScript?

2

您可以使用Localestring

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/

+0

似乎無法得到這個工作你有一個jsfidde? –

+0

https://jsfiddle.net/646m7905/ –

+0

爲什麼要在這裏使用可運行代碼段時作爲小提琴發佈? – RobG

0

你有辦法讓貨幣名稱(即「歐元」,「美元」,「英鎊」,等等)?如果是這樣,只是這樣做:

currencySymbols = {euros:'&euro;',dollars:'$',pounds:'&pound;'}; 
finalText = currencySymbols[currencyText.toLowerCase()] + currencyValue; 

這會給你像$42£6.38