我是javascript新手,所以请记住这一点。。。我正在努力自学。我正在使用自定义汇率的货币转换器-无API。
我已经设法找到了实际转换的解决方案,尽管它只适用于第一次输出。例如,如果我想把10欧元兑换成英镑,它就行了。当我想将这10欧元兑换成清单中的任何其他货币时,问题就开始了,例如美元。您可能会注意到,列表中的第一种输出货币是英镑。我的转换只适用于那个。它不适用于任何其他货币-因此,如果我想从欧元转换为加元,它就不起作用。我想能够从任何货币转换为下拉菜单中可用的任何货币。
我做错了什么?
这是我的html/引导程序:
function Currency() {
y = document.getElementById("converter").value;
return y;
}
function Calculate() {
y = Currency();
x = document.getElementById("value1").value;
if (x == "") {
document.getElementById("value2").value = "";
} else {
switch (y) {
case "EUR":
document.getElementById("value2").value = x * 1;
break;
case "CAD":
document.getElementById("value2").value = x * 3;
break;
case "CHF":
document.getElementById("value2").value = x * 4;
break;
case "GBP":
document.getElementById("value2").value = x * 5;
break;
case "USD":
document.getElementById("value2").value = x * 6;
break;
}
}
}
<div class="container">
<h1>Currency Converter</h1>
<div class="row">
<div class="col-6 col-md-2 mb-4">
<input type="number" oninput="Calculate()" class="form-control" id="value1">
</div>
<div class="col-6 col-md-2 mb-4">
<select onchange="Currency(); Calculate()" class="form-select" id="converter">
<option value="EUR">EUR</option>
<option value="CAD">CAD</option>
<option value="CHF">CHF</option>
<option value="GBP">GBP</option>
<option value="USD">USD</option>
</select>
</div>
</div>
<div class="row row-two">
<div class="col-6 col-md-2 mb-4">
<input type="number" class="form-control" id="value2">
</div>
<div class="col-6 col-md-2 mb-4">
<select onchange="Currency(); Calculate()" class="form-select" id="converter">
<option value="GBP">GBP</option>
<option value="CAD">CAD</option>
<option value="CHF">CHF</option>
<option value="EUR">EUR</option>
<option value="USD">USD</option>
</select>
</div>
</div>
我真的很感谢你在这件事上的帮助-非常感谢!
2条答案
按热度按时间xmjla07d1#
首先,您需要了解html和js是如何相互连接的。所有html ID必须是唯一的。这是你用过的
id="converter"
两次,这违反了规定。我必须在单个页面中是唯一的,因此只能有一个id为的元素converter
. 让我们先重写html。现在来看js部分。不先声明变量就抛出变量不是最佳做法。
坏习惯:
良好做法:
在javascript中,可以使用
var
,let
,及const
. 使用const
当声明为最终声明且值不会更新时。如果您认为将来必须更改变量的值,请使用let
而不是const
.现在,让我们关注这个问题。为了开发货币转换器,我们需要检索输入值(1、2、3等)、输入货币(即欧元)和输出货币(英镑)。我们可以使用
document.getElementById
为此。在这里
input_currency
将是将值转换为的货币output_currency
.inputElement
是第一个文本字段元素,并且outputElement
是我们将在其上推送计算输出的文本字段。请注意,我们使用了一个函数名
parseFloat
.parseFloat
将任何字符串转换为浮点数。默认情况下,我们从文本字段中获取的值是字符串,但由于我们计划执行数学运算,所以需要将它们转换为数字。现在让我们应用一些条件,计算我们的值并将其存储在
output
变量全部加在一起。
x6yk4ghg2#
主要问题是重复的ID。您应该更改的两个示例
convertor
到currencyFrom
及currencyTo
. 这将让您识别正确的下拉列表。这将正确地将值从
value1
到value2
使用适当的乘数。不幸的是,要进行正确的转换,您需要同时识别要转换的货币和要转换的货币。这需要在每种货币组合之间有一个适当的Map。
最简单的方法是将所有输入货币转换为特定货币,然后将其转换为目标货币: