javascript - 如何在 Javascript 中的函数中创建另一个代码块的快捷方式?
问题描述
好的,所以我必须为我在这门课上的期末项目设计一个货币转换器。到目前为止,我已经获得了用户转换货币选项的 if 语句。但问题是,我不确定如何为用户转换为的第二种货币创建 if 语句,而不必将大量杂乱的代码粘贴到第一个选项的每个 if 语句中。
我已经尝试过用我需要的东西创建另一个函数,但我不确定我是否可以或如何在原始函数中调用它。
另外,对于货币代码,我打算在它下面创建while循环,所以它会询问用户,然后根据代码的多少进行转换;为不同的货币保留不同的金额。
function CurrencyConverter(){
var cad = "CAD";
var usd = "USD";
var gbp = "GBP";
var euro = "EUR";
var yen = "JPY";
var CurrencyCode = 0;
var inputted_currency = prompt("What currency is your amount in?");
if(inputted_currency == cad || inputted_currency == "Canadian" || inputted_currency == "Canadian Dollars"){
CurrencyCode + 1;
document.getElementById("FromCurrency").innerHTML = "CAD";
var twoC = call(SecondCurrency);
}
else if(inputted_currency == usd || inputted_currency == "American" || inputted_currency == "American Dollars"){
CurrencyCode + 2;
document.getElementById("FromCurrency").innerHTML = "USD";
var converted_currency = prompt("What currency would you like to convert to?");
}
else if(inputted_currency == gbp || inputted_currency == "British" || inputted_currency == "British Pounds" || inputted_currency == "Pounds"){
CurrencyCode + 3;
document.getElementById("FromCurrency").innerHTML = "GBP";
var converted_currency = prompt("What currency would you like to convert to?");
}
else if(inputted_currency == euro || inputted_currency == "European" || inputted_currency == "European Euros" || inputted_currency == "Euros"){
CurrencyCode + 4;
document.getElementById("FromCurrency").innerHTML = "EUR";
var converted_currency = prompt("What currency would you like to convert to?");
}
else if(inputted_currency == yen || inputted_currency == "Japanese" || inputted_currency == "Japanese Yen" || inputted_currency == "Yen"){
CurrencyCode + 5;
document.getElementById("FromCurrency").innerHTML = "JPY";
var converted_currency = prompt("What currency would you like to convert to?");
}
else if(inputted_currency == "Dollars"){
var dollar = prompt("Alright, Canadian or American?");
if (dollar == "American"){
CurrencyCode + 2;
document.getElementById("FromCurrency").innerHTML = "USD";
var converted_currency = prompt("What currency would you like to convert to?");
}
else if(dollar == "Canadian"){
CurrencyCode + 1;
document.getElementById("FromCurrency").innerHTML = "CAD";
var converted_currency = prompt("What currency would you like to convert to?");
}
else{alert("Sorry, that's not a valid option. Please enter either American or Canadian exactly")
}
}
else{alert("Sorry, that's not one of the supported currencies")
}
}
我希望的最终产品是,一旦用户单击一个按钮,他们就会输入他们正在转换的货币,以及他们以该货币持有的金额。然后,转换器能够根据他们投入的货币以及金额显示不同的金额。
如果我能得到任何提示来简化我的代码,或者以某种方式将主代码链接到另一个代码块,我将不胜感激。感谢您到目前为止的时间。
解决方案
我认为将其中一些信息放入两个对象中会大大受益;一个用于存储用户选择(国家、金额和目标国家),另一个用于将用户输入映射到国家信息。
var userInput = {
countryFrom: null,
amount: null,
countryTo: null
};
var countryMapping: {
'Canadian':{
CurrencyCode: 1,
countryCode: 'CAD',
},
'Canadian Dollars':{
CurrencyCode: 1,
countryCode: 'CAD',
},
//...repeat for all mappings
};
function currencyConverter(){
// first prompt
var inputted_currency = prompt("What currency is your amount in?");
if(countryMapping.hasOwnProperty(inputted_currency)){
var result = countryMapping[inputted_currency];
var countryCode = result.countryCode;
document.getElementById("FromCurrency").innerHTML = countryCode;
//var CurrencyCode = result.CurrencyCode;
userInput.countryFrom = countryCode;
// second prompt
var converted_currency = prompt("What currency would you like to convert to?");
if(countryMapping.hasOwnProperty(converted_currency)){
var secondResult = countryMapping[converted_currency];
var countryCode = secondResult.countryCode;
//var CurrencyCode = secondResult.CurrencyCode;
userInput.countryTo = secondResult.countryCode;
} else {
alert("Sorry, that's not one of the supported currencies")
}
} else {
alert("Sorry, that's not one of the supported currencies")
}
}
这不处理从用户那里获取金额。我也没有处理 CountryCode,正如其他用户所提到的,如果它没有分配给变量,它不会做任何事情。
推荐阅读
- nativescript - 将水平 ScrollView 添加到代码生成的 GridLayout
- vba - 发送带有空白主题的电子邮件
- apache-spark - 如果不用于流式作业,则按比例缩小 DataProc 工作人员
- javascript - 确保在重定向之前将值保存在 localStorage
- matlab - 关于 matlab 命令“fir1”的混淆
- ansible - Ansible 成为用户不运行 /etc/profile
- r - 根据该行的另一列中的值对列中的值进行操作的更好方法?
- css - 如何在我的渐变中添加渐变不透明度?
- php - 在页面导航上清除了 Angular php-jwt 令牌
- python - Scrapy Splash formrequest.formresponse, - 停留在识别动态加载页面的表单数据