Javascript 我能';我不能让这个程序把最终的计算结果输出到网页上

Javascript 我能';我不能让这个程序把最终的计算结果输出到网页上,javascript,html,Javascript,Html,我试图在用户点击“转换”按钮后获得要输出到网页屏幕上的计算值。在提交表单时,我已经多次检查控制台,但没有结果,没有一个错误 我还知道整个代码都在被解释,因为我在JS主体的底部放置了一个警报,它在我加载页面时显示出来 我对编程也很陌生,只有几周的经验,所以如果我犯了任何愚蠢的小错误,我会很感激。谢谢 代码: 函数设置(){ document.getElementById(“currencyValue”).style.background=“白色”; document.getElementById

我试图在用户点击“转换”按钮后获得要输出到网页屏幕上的计算值。在提交表单时,我已经多次检查控制台,但没有结果,没有一个错误

我还知道整个代码都在被解释,因为我在JS主体的底部放置了一个警报,它在我加载页面时显示出来

我对编程也很陌生,只有几周的经验,所以如果我犯了任何愚蠢的小错误,我会很感激。谢谢

代码:

函数设置(){
document.getElementById(“currencyValue”).style.background=“白色”;
document.getElementById(“currencyValue”).value=“”;
document.getElementById(“currency1”).value=“GBP”;
document.getElementById(“currency2”).value=“GBP”;
}
函数验证(){
var valid=true;
var currencyValue=document.getElementById(“currencyValue”).value;
if(isNaN(currencyValue)=真){
document.getElementById(“currencyValue”).style.background=“crimson”;
警报(“请输入一个数值”);
有效=错误;
}else if(currencyValue==“”){
document.getElementById(“currencyValue”).style.background=“crimson”;
警报(“请输入值”);
有效=错误;
}否则{
document.getElementById(“currencyValue”).style.background=“白色”;
}
}
if(valid=true){
函数计算(){
金融风险价值;
货币符号;
var currencyCalc1=document.getElementById(“currency1”).value;
var currencyCalc2=document.getElementById(“currency2”).value;
//[英镑],[欧元],[日元],[美元]
常量英镑=[1,1.12,131.86,1.23];
常数欧元=[0.89,1117.43,1.10];
恒量日元=[0.0076,0.0085,1,0.0094];
常数美元=[0.81,0.91,106.94,1];
如果(currencyCalc1==“GBP”和¤cyCalc2==“GBP”){
最终信用证=英镑[0];
}否则,如果(货币c1==“英镑”和&货币c2==“欧元”){
最终信用证=英镑[1];
}否则,如果(货币c1==“英镑”和&货币c2==“日元”){
最终信用证=英镑[2];
}否则,如果(货币c1==“英镑”和&货币c2==“美元”){
最终信用证=英镑[3];
//欧元
}否则,如果(货币c1==“欧元”和货币c2==“英镑”){
最终信用证=欧元[0];
}否则,如果(货币c1==“欧元”和¤cyCalc2==“欧元”){
最终信用证=欧元[1];
}否则,如果(货币c1==“欧元”和&货币c2==“日元”){
最终信用证=欧元[2];
}否则,如果(货币c1==“欧元”和货币c2==“美元”){
最终信用证=欧元[3];
//日元
}否则,如果(货币c1==“日元”和&货币c2==“英镑”){
finalCalc=日元[0];
}否则,如果(货币c1==“日元”和¤cyCalc2==“欧元”){
finalCalc=日元[1];
}否则如果(currencyCalc1==“日元”和¤cyCalc2==“日元”){
finalCalc=日元[2];
}否则,如果(currencyCalc1==“日元”和¤cyCalc2==“美元”){
finalCalc=日元[3];
//美元
}否则,如果(货币c1==“美元”和&货币c2==“英镑”){
最终信用证=美元[0];
}否则,如果(货币c1==“美元”和&货币c2==“欧元”){
最终信用证=美元[1];
}否则,如果(currencyCalc1==“美元”和¤cyCalc2==“日元”){
最终信用证=美元[2];
}否则,如果(currencyCalc1==“USD”和¤cyCalc2==“USD”){
最终信用证=美元[3];
}
如果(货币C2==“英镑”){
货币符号=”;
}否则,如果(货币C2==“欧元”){
currencySymbol=“€”;
}否则,如果(货币c2==“日元”){
currencySymbol=“=”;
}否则,如果(货币c2==“美元”){
currencySymbol=“$”;
}
document.getElementById(“finalResult”).innerHTML=currencySymbol+(finalCalc*currencyValue);
}
}

货币转换器
货币转换器
转换
英镑
欧元
日元
美元
到
英镑
欧元
日元
美元
转换
重置
结果是:

我在代码中发现了两个问题

  • 您根本没有调用
    calculate
    函数。 调用
    validate
    函数的else部分中的
    calculate
    函数
  • currencyValue
    变量未在
    calculate
    函数内启动。 在
    计算功能开始时启动
  • 我刚刚在下面的代码中添加了关于更改的注释,请查看

        function setup() {
    
          document.getElementById("currencyValue").style.background = "white";
          document.getElementById("currencyValue").value = "";
          document.getElementById("currency1").value = "GBP";
          document.getElementById("currency2").value = "GBP";
    
        }
    
        function validate() {
    
          var currencyValue = document.getElementById("currencyValue").value;
    
          if (isNaN(currencyValue) == true) {
            document.getElementById("currencyValue").style.background = "crimson";
            alert("Please enter a numeric value");
          } else if (currencyValue == "") {
            document.getElementById("currencyValue").style.background = "crimson";
            alert("Please enter a value");
          } else {
            document.getElementById("currencyValue").style.background = "white";
            calculate();// here is calling the calculate function after validating the input.
          }
    
        }
    
    
        function calculate() {
    
          var finalCalc;
          var currencySymbol;
          var currencyCalc1 = document.getElementById("currency1").value;
          var currencyCalc2 = document.getElementById("currency2").value;
          //currencyValue initiating from input field.
          var currencyValue = document.getElementById("currencyValue").value;
    
          //[gbp], [eur], [jpy], [usd]
          const gbp = [1, 1.12, 131.86, 1.23];
          const eur = [0.89, 1, 117.43, 1.10];
          const jpy = [0.0076, 0.0085, 1, 0.0094];
          const usd = [0.81, 0.91, 106.94, 1];
    
          if (currencyCalc1 == "GBP" && currencyCalc2 == "GBP") {
            finalCalc = gbp[0];
          } else if (currencyCalc1 == "GBP" && currencyCalc2 == "EUR") {
            finalCalc = gbp[1];
          } else if (currencyCalc1 == "GBP" && currencyCalc2 == "JPY") {
            finalCalc = gbp[2];
          } else if (currencyCalc1 == "GBP" && currencyCalc2 == "USD") {
            finalCalc = gbp[3];
            //EUR
          } else if (currencyCalc1 == "EUR" && currencyCalc2 == "GBP") {
            finalCalc = eur[0];
          } else if (currencyCalc1 == "EUR" && currencyCalc2 == "EUR") {
            finalCalc = eur[1];
          } else if (currencyCalc1 == "EUR" && currencyCalc2 == "JPY") {
            finalCalc = eur[2];
          } else if (currencyCalc1 == "EUR" && currencyCalc2 == "USD") {
            finalCalc = eur[3];
            //JPY
          } else if (currencyCalc1 == "JPY" && currencyCalc2 == "GBP") {
            finalCalc = jpy[0];
          } else if (currencyCalc1 == "JPY" && currencyCalc2 == "EUR") {
            finalCalc = jpy[1];
          } else if (currencyCalc1 == "JPY" && currencyCalc2 == "JPY") {
            finalCalc = jpy[2];
          } else if (currencyCalc1 == "JPY" && currencyCalc2 == "USD") {
            finalCalc = jpy[3];
            //USD
          } else if (currencyCalc1 == "USD" && currencyCalc2 == "GBP") {
            finalCalc = usd[0];
          } else if (currencyCalc1 == "USD" && currencyCalc2 == "EUR") {
            finalCalc = usd[1];
          } else if (currencyCalc1 == "USD" && currencyCalc2 == "JPY") {
            finalCalc = usd[2];
          } else if (currencyCalc1 == "USD" && currencyCalc2 == "USD") {
            finalCalc = usd[3];
          }
    
    
          if (currencyCalc2 == "GBP") {
            currencySymbol = "£";
          } else if (currencyCalc2 == "EUR") {
            currencySymbol = "€";
          } else if (currencyCalc2 == "JPY") {
            currencySymbol = "¥";
          } else if (currencyCalc2 == "USD") {
            currencySymbol = "$";
          }
    
          document.getElementById("finalResult").innerHTML = currencySymbol + (finalCalc * currencyValue);
    
        }
    

    哪里调用了
    calculate()
    ?我在HTML中看不到这一点……而且,变量
    currencyValue
    在任何地方都没有实例化。您的验证函数()是什么?我在你的代码里找不到。没问题。现在,您的问题是您没有在任何地方调用
    calculate()
    。如果所有验证都成功通过,您可能希望在
    validate
    函数结束时执行此操作。关键注释是@Cerbrus的第一条注释-您实际上没有调用calculate anywhere。谢谢,但我在validate()中初始化currencyValue变量的原因是函数用于检查是否输入了数值,尽管我在开始时尝试在calculate()函数中初始化它,但它不起作用。另外,我尝试在validate()的else部分调用calculate(),现在我得到了结果,但是现在它们看起来是这样的:r