2016-10-07 5 views
1

это код, а потом будет написано, что мне нужна ваша помощь:Получить переменные значения, используя другие переменные значения

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 содержит свое имя, и я не знаю, как это сделать. Цените его. (пожалуйста, не сообщайте мне о коде, который я знаю, это не самый эффективный код, но мне нужна ваша помощь именно в этой конкретной проблеме, и я исправлю все это позже).

+1

Ваши переменные определены в локальный блок сферы ..... Они могут быть доступны только внутри Варс() ... – epascarello

+0

Ну нет никакого фактического способа сделать это прямо сейчас. Переменные должны делиться либо путем передачи их, либо путем их глобального. Конечно, первый из них предпочтителен. – vlaz

+0

Я не знаю, что вы имеете в виду. можете ли вы отправить пример? – mastercoder

ответ

-1

Ваши переменные от и до кажутся быть объявленным внутри функции Vars, что означает, что к ним невозможно получить доступ в функции расчета;

Вы можете объявить их за пределами функции 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) 
    }) 
} 

Я надеюсь, что это помогает

+0

вы значит не ставить тогда никакой функции? – mastercoder

+0

Да, объявите их глобальным способом, чтобы иметь возможность использовать их там, где вы хотите –

+0

, и он по-прежнему не позволяет мне получить доступ к значению переменных, используя From и To – mastercoder

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); 
    }); 
} 
Смежные вопросы