HTML/Javascript 货币转换器
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19774387/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
HTML/Javascript Currency converter
提问by Ben McAlindin
I'm trying to make a currency converter that converts between several different currencies on change. It uses some pre-determined exchange rates. Input boxes display, but none of the javascript seems to work. Any help?
我正在尝试制作一个货币转换器,可以在更改时在几种不同的货币之间进行转换。它使用一些预先确定的汇率。输入框显示,但似乎没有一个 javascript 工作。有什么帮助吗?
Edited with updated code. Still does not convert anything.
使用更新的代码进行编辑。仍然没有转换任何东西。
HTML body:
HTML 正文:
<body onload="init()">
<input type="text" id="GBP" size="10" value="0" onchange="gbp()"/>
<label for="GBP"> GBP </label>
</br>
<input type="text" id="USD" size="10" value="0" onchange="usd()" />
<label for="USD"> USD </label>
</br>
<input type="text" id="EUR" size="10" value="0" onchange="eur()" />
<label for="EUR"> EUR </label>
</br>
<input type="text" id="CAD" size="10" value="0" onchange="cad()" />
<label for="CAD"> CAD </label>
</br>
<input type="text" id="AUD" size="10" value="0" onchange="aud()" />
<label for="AUD"> AUD </label>
</body>
Javascript code:
Javascript代码:
var gbp, usd, eur, cad, aud;
function init()
{
gbp = document.getElementById("GBP");
usd = document.getElementById("USD");
eur = document.getElementById("EUR");
cad = document.getElementById("CAD");
aud = document.getElementById("AUD");
}
function gbp()
{
usd.value = parseFloat(gbp.value) * 0.49246;
eur.value = parseFloat(gbp.value) * 0.69714;
cad.value = parseFloat(gbp.value) * 0.50221;
aud.value = parseFloat(gbp.value) * 0.43497;
}
function eur()
{
gbp.value = parseFloat(eur.value) * 1.43448;
usd.value = parseFloat(eur.value) * 0.70641;
cad.value = parseFloat(eur.value) * 0.72037;
aud.value = parseFloat(eur.value) * 0.62382;
}
function cad()
{
gbp.value = parseFloat(cad.value) * 1.99169;
usd.value = parseFloat(cad.value) * 0.98054;
eur.value = parseFloat(cad.value) * 1.38814;
aud.value = parseFloat(cad.value) * 0.86613;
}
function aud()
{
gbp.value = parseFloat(aud.value) * 2.29964;
usd.value = parseFloat(aud.value) * 1.13262;
eur.value = parseFloat(aud.value) * 1.60329;
cad.value = parseFloat(aud.value) * 0.88297;
}
function usd()
{
gbp.value = parseFloat(usd.value) * 2.03032;
eur.value = parseFloat(usd.value) * 1.41544;
cad.value = parseFloat(usd.value) * 1.01941;
aud.value = parseFloat(usd.value) * 0.88297;
}
采纳答案by antyrat
You need to remove var
statements from initialize
function and add them above this function:
您需要var
从initialize
函数中删除语句并将它们添加到此函数之上:
var gbp, usd, eur, cad, aud;
function init()
{
gbp = document.getElementById("GBP");
usd = document.getElementById("USD");
eur = document.getElementById("EUR");
cad = document.getElementById("CAD");
aud = document.getElementById("AUD");
//...
In this case variables gbp, usd, eur, cad, aud
will be visible in other functions scopes.
在这种情况下,变量gbp, usd, eur, cad, aud
将在其他函数范围内可见。
Probably you need to read more about variables and scopes. For example at MDN. Scopes and closures are very important in JS.
可能您需要阅读更多关于变量和作用域的信息。例如在MDN。作用域和闭包在 JS 中非常重要。
回答by Turnip
I know this is old but I just happend upon it and thought you might like to know why your code still doesn't work even after antyrat's (correct) suggestion.
我知道这是旧的,但我只是偶然发现它,并认为您可能想知道为什么即使在 antyrat 的(正确)建议之后您的代码仍然无法工作。
The issue lies with the clash between your variables and functions names.
问题在于变量名和函数名之间的冲突。
There are some good articles explaining what actually happens when you do this offsite, such as here
有一些很好的文章解释了当您在异地执行此操作时实际发生的情况,例如这里
Simple fix: change your function names...
简单的修复:更改您的函数名称...
var gbp, usd, eur, cad, aud;
function init()
{
gbp = document.getElementById("GBP");
usd = document.getElementById("USD");
eur = document.getElementById("EUR");
cad = document.getElementById("CAD");
aud = document.getElementById("AUD");
}
function gbpfunc()
{
usd.value = parseFloat(gbp.value) * 0.49246;
eur.value = parseFloat(gbp.value) * 0.69714;
cad.value = parseFloat(gbp.value) * 0.50221;
aud.value = parseFloat(gbp.value) * 0.43497;
}
function eurfunc()
{
gbp.value = parseFloat(eur.value) * 1.43448;
usd.value = parseFloat(eur.value) * 0.70641;
cad.value = parseFloat(eur.value) * 0.72037;
aud.value = parseFloat(eur.value) * 0.62382;
}
function cadfunc()
{
gbp.value = parseFloat(cad.value) * 1.99169;
usd.value = parseFloat(cad.value) * 0.98054;
eur.value = parseFloat(cad.value) * 1.38814;
aud.value = parseFloat(cad.value) * 0.86613;
}
function audfunc()
{
gbp.value = parseFloat(aud.value) * 2.29964;
usd.value = parseFloat(aud.value) * 1.13262;
eur.value = parseFloat(aud.value) * 1.60329;
cad.value = parseFloat(aud.value) * 0.88297;
}
function usdfunc()
{
gbp.value = parseFloat(usd.value) * 2.03032;
eur.value = parseFloat(usd.value) * 1.41544;
cad.value = parseFloat(usd.value) * 1.01941;
aud.value = parseFloat(usd.value) * 0.88297;
}
init();
<input type="text" id="GBP" size="10" value="0" onchange="gbpfunc()"/>
<label for="GBP"> GBP </label>
</br>
<input type="text" id="USD" size="10" value="0" onchange="usdfunc()" />
<label for="USD"> USD </label>
</br>
<input type="text" id="EUR" size="10" value="0" onchange="eurfunc()" />
<label for="EUR"> EUR </label>
</br>
<input type="text" id="CAD" size="10" value="0" onchange="cadfunc()" />
<label for="CAD"> CAD </label>
</br>
<input type="text" id="AUD" size="10" value="0" onchange="audfunc()" />
<label for="AUD"> AUD </label>