使用其他变量值

时间:2016-10-07 15:52:59

标签: javascript jquery variables currency

这是代码,之后会写出我需要你的帮助:

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">&nbsp;To&nbsp;</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包含其名称的变量的值,我不知道该怎么做。 欣赏它。 (请不要给我注意代码,我知道这不是最正式的代码,但我需要你的帮助,只是在这个特定的问题,我会在以后修复所有这些。)

2 个答案:

答案 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内使用Tocalculate的原因。要做到这一点,你必须使它们成为全球性的。

接下来,您将引用一个未知变量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)
    })
}

我希望这会有所帮助