2016-10-07 2 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에 이름이 포함되어 있으며이를 수행하는 방법을 모르겠습니다. 감사합니다. (제발 내가 가장 공식적인 코드가 아니라는 것을 알고있는 코드에 대한 노트를 제공하지 마십시오.이 특정 문제에 대해서만 당신의 도움이 필요합니다. 나중에 모든 문제를 해결할 것입니다.) From 및 To 변수는 다음과 같은 것 같습니다.

+1

귀하의 변수가 로컬 블록 범위에 정의되어 있습니다 ..... 그들은 단지 바르()의 내부에 액세스 할 수 있습니다 ... – epascarello

+0

그럼 지금 당장 할 수있는 실제적인 방법이 없습니다. 변수를 전달하거나 전역으로 만들어 변수를 공유해야합니다. 물론 전자가 선호됩니다. – vlaz

+0

무슨 뜻인지 모르겠다. 예를 들어 주시겠습니까? – mastercoder

답변

-1

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) 
    }) 
} 

내가이이 코드는 결코 방법 Vars를 호출하지 <button type="click" id="submit" onclick=" Vars; calculate(); ">

+0

어떤 기능에 넣지 않는 것을 의미합니까? – mastercoder

+0

예, 글로벌 방식으로 선언하여 어디서나 –

+0

을 원하는 위치에서 사용할 수 있으며 From 및 To를 사용하여 변수 값에 액세스 할 수 없습니다. – mastercoder

0

먼저 도움이되기를 바랍니다, 그것은 단지 참조입니다. ()이 없으면 호출되지 않습니다.

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는

에서

보면 다음 변수 만 바르 방법의 블록 범위로 참조합니다. 메소드 밖에서는 액세스 할 수 없습니다. 그래서 calculate 안에 From 또는 To을 사용할 수 없습니다. 그런 일이 일어나려면 글로벌화해야합니다.

다음으로 알려지지 않은 변수 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); 
    }); 
} 
관련 문제