首页 > 解决方案 > 如何在 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")

 }

}

我希望的最终产品是,一旦用户单击一个按钮,他们就会输入他们正在转换的货币,以及他们以该货币持有的金额。然后,转换器能够根据他们投入的货币以及金额显示不同的金额。

如果我能得到任何提示来简化我的代码,或者以某种方式将主代码链接到另一个代码块,我将不胜感激。感谢您到目前为止的时间。

标签: javascripthtml

解决方案


我认为将其中一些信息放入两个对象中会大大受益;一个用于存储用户选择(国家、金额和目标国家),另一个用于将用户输入映射到国家信息。

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,正如其他用户所提到的,如果它没有分配给变量,它不会做任何事情。


推荐阅读