我试图在用户单击“转换”按钮后将计算值输出到网页上的屏幕。提交表单时,我已多次检查控制台,但无济于事,没有一个错误。
我还知道整个代码都在被解释,因为我在JS主体的底部放置了一个警报,并在加载页面时显示该警报。
对于只有几周经验的编程人员来说,它还是一个相当新的事物,因此,如果我犯了任何微小的愚蠢错误,我将不胜感激。谢谢
代码:
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 valid = true;
var currencyValue = document.getElementById("currencyValue").value;
if (isNaN(currencyValue) == true) {
document.getElementById("currencyValue").style.background = "crimson";
alert("Please enter a numeric value");
valid = false;
} else if (currencyValue == "") {
document.getElementById("currencyValue").style.background = "crimson";
alert("Please enter a value");
valid = false;
} else {
document.getElementById("currencyValue").style.background = "white";
}
}
if (valid = true) {
function calculate() {
var finalCalc;
var currencySymbol;
var currencyCalc1 = document.getElementById("currency1").value;
var currencyCalc2 = document.getElementById("currency2").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);
}
}
<!DOCTYPE html>
<html>
<head>
<title>Currency converter</title>
<link href="currencyStyles.css" type="text/css" rel="stylesheet"></link>
<link href="favicon.ico" rel="icon"></link>
<script src="currencyScript.js" type="text/javascript"></script>
</head>
<body>
<div id="containerDiv">
<h3 id="title">CURRENCY CONVERTER</h3>
<div class="userInterfaceDivs">
<table id="userInterfaceTable">
<tr>
<td>
Convert
</td>
<td>
<input id="currencyValue" class="interfaceElements" type="text" placeholder="Currency">
<select id="currency1" class="interfaceElements">
<option>GBP</option>
<option>EUR</option>
<option>JPY</option>
<option>USD</option>
</td>
<td> </td>
<td>
to
</td>
<td>
<select id="currency2" class="interfaceElements">
<option>GBP</option>
<option>EUR</option>
<option>JPY</option>
<option>USD</option>
</td>
<td>
</td>
<td>
<button class="interfaceElements" type="button" onClick="validate()">Convert</button>
<button class="interfaceElements" type="button" onClick="setup()">Reset</button>
</td>
</tr>
</table>
</div>
<div class="userInterfaceDivs" id="resultDiv">
<table>
<tr>
<td>The result is: </td>
<td id="finalResult"> </td>
</tr>
</table>
</div>
</div>
</body>
</html>
答案 0 :(得分:0)
我在代码中发现2个问题。
calculate
函数。
在calculate
函数的else部分中调用validate
函数currencyValue
变量未在calculate
函数内部初始化。
在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);
}