这是代码,之后会写出我需要你的帮助:
function Vars() {
var select1 = document.getElementById('From');
var From = (select1.options[select.selectedIndex]);
var select2 = document.getElementById('To');
var To = (select2.options[select.selectedIndex]);
}
function calculate() {
$.getJSON(
"http://api.fixer.io/latest?base=USD",
function(data) {
var ZER = 0
var USD = 1
var AUD = data.rates.AUD
var BRL = data.rates.BRL
var BGN = data.rates.BGN
var CAD = data.rates.CAD
var CNY = data.rates.CNY
var HRK = data.rates.HRK
var CZK = data.rates.CZK
var DKK = data.rates.DKK
var EUR = data.rates.EUR
var HKD = data.rates.HKD
var HUF = data.rates.HUF
var INR = data.rates.INR
var IDR = data.rates.IDR
var ILS = data.rates.ILS
var KRW = data.rates.KRW
var MYR = data.rates.MYR
var MXN = data.rates.MXN
var NZD = data.rates.NZD
var NOK = data.rates.NOK
var JPY = data.rates.JPY
var PLN = data.rates.PLN
var RON = data.rates.RON
var RUB = data.rates.RUB
var ZAR = data.rates.ZAR
var SEK = data.rates.SEK
var THB = data.rates.THB
var TRY = data.rates.TRY
var GBP = data.rates.GBP
alert(To.value / From.value)
})
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
<center>
<a href="index.html">
<img id="logo" src="http://placehold.it/340x170" height="170px" width="340px">
</a>
<div id="converter">
<center>
<article>
<br>
<input type="number" name="amount" placeholder="Amount" id="amount" />
<br>
<br>
<select id="From">
<option value="ZER">Convert From..</option>
<option value="USD">US Dollar</option>
<option value="AUD">Australian Dollar</option>
<option value="BRL">Brazilian Real</option>
<option value="BGN">Bulgarian Lev</option>
<option value="CAD">Canadian Dollar</option>
<option value="CNY">Chinese Yuan Renminbi</option>
<option value="HRK">Croatian Kuna</option>
<option value="CZK">Czech Koruna</option>
<option value="DKK">Danish Krone</option>
<option value="EUR">Euro</option>
<option value="HKD">Hong Kong Dollar</option>
<option value="HUF">Hungarian Forint</option>
<option value="INR">Indian Rupee</option>
<option value="IDR">Indonesian Rupiah</option>
<option value="ILS">Israeli Shekel</option>
<option value="KRW">South Korean Won</option>
<option value="MYR">Malaysian Ringgit</option>
<option value="MXN">Mexican Peso</option>
<option value="NZD">New Zealand Dollar</option>
<option value="NOK">Norwegian Krone</option>
<option value="JPY">Japanese Yen</option>
<option value="PLN">Polish Zloty</option>
<option value="RON">Romanian New Leu</option>
<option value="RUB">Russian Ruble</option>
<option value="ZAR">South African Rand</option>
<option value="SEK">Swedish Krona</option>
<option value="THB">Thai Baht</option>
<option value="TRY">Turkish Lira</option>
<option value="GBP">British Pound</option>
</select>
<div id="to"> To </div>
<select id="To">
<option value="ZER">Convert To..</option>
<option value="USD">US Dollar</option>
<option value="AUD">Australian Dollar</option>
<option value="BRL">Brazilian Real</option>
<option value="BGN">Bulgarian Lev</option>
<option value="CAD">Canadian Dollar</option>
<option value="CNY">Chinese Yuan Renminbi</option>
<option value="HRK">Croatian Kuna</option>
<option value="CZK">Czech Koruna</option>
<option value="DKK">Danish Krone</option>
<option value="EUR">Euro</option>
<option value="HKD">Hong Kong Dollar</option>
<option value="HUF">Hungarian Forint</option>
<option value="INR">Indian Rupee</option>
<option value="IDR">Indonesian Rupiah</option>
<option value="ILS">Israeli Shekel</option>
<option value="KRW">South Korean Won</option>
<option value="MYR">Malaysian Ringgit</option>
<option value="MXN">Mexican Peso</option>
<option value="NZD">New Zealand Dollar</option>
<option value="NOK">Norwegian Krone</option>
<option value="JPY">Japanese Yen</option>
<option value="PLN">Polish Zloty</option>
<option value="RON">Romanian New Leu</option>
<option value="RUB">Russian Ruble</option>
<option value="ZAR">South African Rand</option>
<option value="SEK">Swedish Krona</option>
<option value="THB">Thai Baht</option>
<option value="TRY">Turkish Lira</option>
<option value="GBP">British Pound</option>
</select>
<br>
<br>
<button type="click" id="submit" onclick=" Vars; calculate(); ">Convert!</button>
<br>
<br>
<br>
<br>
</article>
</center>
</div>
我需要获取From / To.value包含其名称的变量的值,我不知道该怎么做。 欣赏它。 (请不要给我注意代码,我知道这不是最正式的代码,但我需要你的帮助,只是在这个特定的问题,我会在以后修复所有这些。)
答案 0 :(得分:0)
首先使用此代码<button type="click" id="submit" onclick=" Vars; calculate(); ">
,它永远不会调用方法Vars
,它只是对它的引用。如果没有()
,就不会被调用。
接下来看看
function Vars() {
var select1 = document.getElementById('From');
var From = (select1.options[select.selectedIndex]); <--var
var select2 = document.getElementById('To');
var To = (select2.options[select.selectedIndex]); <--var
}
这些变量使变量仅引用方法Vars的块范围。您无法在方法之外访问它们。这就是为什么您无法在From
内使用To
或calculate
的原因。要做到这一点,你必须使它们成为全球性的。
接下来,您将引用一个未知变量select
,这是您复制并粘贴原始代码时的错误。
var From = (select1.options[select.selectedIndex]); <-- what is select?
var To = (select2.options[select.selectedIndex]); <-- what is select?
下一个问题是,一旦你解决了这个问题,你就会潜入两个字符串。
alert(To.value / From.value)
字符串值不会神奇地引用您在其上方创建的变量。你需要看一下。并且它将是括号表示法。但是没有必要查找一个值,因为From总是一个。
那么您的代码应该是什么样的?
function calculate() {
var select1 = document.getElementById('From'),
fromCode = select1.options[select1.selectedIndex].value,
select2 = document.getElementById('To'),
toCode = select2.options[select.selectedIndex].value,
fromAmt = document.getElementById("amount");
$.getJSON(
"http://api.fixer.io/latest?base=" + fromCode,
function(data) {
var toRate = data.rates[toCode];
alert(fromAmt * toRate);
});
}
答案 1 :(得分:-1)
您的From和To变量似乎在Vars函数内声明,这意味着它们无法在calculate函数中访问;
您可以在Vars函数之外声明它们,以便在其他函数中使用它们。
var From;
var To;
function Vars() {
var select1 = document.getElementById('From');
From = (select1.options[select.selectedIndex]);
var select2 = document.getElementById('To');
To = (select2.options[select.selectedIndex]);
}
function calculate() {
$.getJSON(
"http://api.fixer.io/latest?base=USD",
function(data) {
var ZER = 0
var USD = 1
var AUD = data.rates.AUD
var BRL = data.rates.BRL
var TRY = data.rates.TRY
var GBP = data.rates.GBP
alert(To.value / From.value)
})
}
我希望这会有所帮助