2012-02-28 3 views
0

Im совершенно новый на Javascript, однако я пытался создать конвертер валют, используя html select, который работает отлично, однако при вызове функции он, кажется, проскакивает прямо над операторами if прямо на инструкцию else {}конвертер валют! (Если есть заявления)

function convUSD() 
{ 
    RATE_GBP = 0.632111252; 
    RATE_EURO = 0.746435769; 
    RATE_AUD = 0.92945441; 

    if(document.selectBox.slBoxCurrency.selectedIndex == 0 && document.frmCurrencyC.radioUSD.checked) 
    { 
     window.alert("Sorry cant do USD to USD convertion! Please select another value."); 
    } 
    else if(document.selectBox.slBoxCurrency.selectedIndex == 0 && document.frmCurrencyC.radioGBP.checked) 
    { 
     inputBox = parseFloat(document.frmCurrencyC.textInputNum.value); 
     outPutBox = inputBox * RATE_GBP; 
     document.frmCurrencyC.textOutPutTotal.value = outPutBox; 
    } 
    else if(document.selectBox.slBoxCurrency.selectedIndex == 0 && document.frmCurrencyC.radioEURO.checked) 
    { 
     inputBox = parseFloat(document.frmCurrencyC.textInputNum.value); 
     outPutBox = inputBox * RATE_EURO; 
     document.frmCurrencyC.textOutPutTotal.value = outPutBox; 
    } 
    else if(document.selectBox.slBoxCurrency.selectedIndex == 0 && document.frmCurrencyC.radioAUD.checked) 
    { 
     inputBox = parseFloat(document.frmCurrencyC.textInputNum.value); 
     outPutBox = inputBox * RATE_AUD; 
     document.frmCurrencyC.textOutPutTotal.value = outPutBox; 
    } 
    else 
    { 
     window.alert("Whoops there was an error"); 
    } 
} 

Первый Если оператор работает нормально, однако, когда я на самом деле хочу, чтобы сделать, например, USD для GBP он возглавляет прямо к заявлению другого.

Если вы, ребята, заметили какие-либо ошибки или просто хорошо все, что было бы очень признательно.

+2

пожалуйста, напишите HTML-форм этого кода ссылки. Если вы можете, опубликуйте все это на http://jsfiddle.net –

+0

http://jsfiddle.net/X8MyF/ Это полный код html/js, спасибо – JayJsNewbie

+1

Почти весь этот код является избыточным. во-первых, проверьте 'selectedIndex'. Если не нуль, то выйдите. Затем определите коэффициент конверсии, по которому установлен флажок. Теперь проанализируйте текст, умножьте его на коэффициент конверсии и верните его обратно. –

ответ

0

У вас есть логика смешалось:

Прежде всего проверьте, какую валюту вы преобразовывая в, глядя на которых радио было выбрано:

function calculateCC() { 
    if (document.frmCurrencyC.radioUSD.checked) { 
     convUSD(); 
    } 
    // etc 
} 

Тогда я хотел бы ожидать вы посмотрите на раскрывающийся список, чтобы узнать, в какой валюте вы конвертируете, но вместо этого вы проверяете радиоприемники, соблюдая при этом, что выбор выпадающего списка соответствует валюте «to»:

function convUSD() { 
    ... 
    if (document.selectBox.slBoxCurrency.selectedIndex == 0 && 
     document.frmCurrencyC.radioGBP.checked) { 
     ... 
    } 
    // etc 
} 

Посмотрев на свой код, кажется, что в вашей первой функции вам нужно проверить валюту «от», а не валюту «до». Так, в calculateCC(), посмотрите на раскрывающемся списке, вместо радиокнопок:

function calculateCC() { 
    if (document.selectBox.slBoxCurrency.selectedIndex == 0) { 
     convUSD(); 
    } 
    // etc 
} 

Работа демо:http://jsfiddle.net/X8MyF/2/

0

Если ничего другого, вы можете упростить это, уменьшив if. Он будет быстрее запускаться и, в конечном счете, легче отлаживать. Этот код также поможет вам идентифицировать вашу ошибку более легко, хотя, не видя остальной части вашего кода и HTML, я не вижу хорошей причины, по которой ваш исходный код не работает. Вы можете попробовать настроить тестовый сайт на jsfiddle.net и поделиться ссылкой; что позволяет полностью тестировать и отлаживать ваш код.

function convUSD() 
{ 
    RATE_GBP = 0.632111252; 
    RATE_EURO = 0.746435769; 
    RATE_AUD = 0.92945441; 

    if (document.selectBox.slBoxCurrency.selectedIndex == 0) 
    { 
     if (document.frmCurrencyC.radioUSD.checked) { 
      window.alert("Sorry cant do USD to USD convertion! Please select another value."); 
     } 
     else if (document.frmCurrencyC.radioGBP.checked) { 
      inputBox = parseFloat(document.frmCurrencyC.textInputNum.value); 
      outPutBox = inputBox * RATE_GBP; 
      document.frmCurrencyC.textOutPutTotal.value = outPutBox; 
     } 
     else if (document.frmCurrencyC.radioEURO.checked){ 
      inputBox = parseFloat(document.frmCurrencyC.textInputNum.value); 
      outPutBox = inputBox * RATE_EURO; 
      document.frmCurrencyC.textOutPutTotal.value = outPutBox; 
     } 
     else if (document.frmCurrencyC.radioAUD.checked) { 
      inputBox = parseFloat(document.frmCurrencyC.textInputNum.value); 
      outPutBox = inputBox * RATE_AUD; 
      document.frmCurrencyC.textOutPutTotal.value = outPutBox; 
     } 
     else { 
      window.alert("Whoops there was an error"); 
     } 
    } 
    else { 
     alert("selected index != 0") 
    } 
} 
+0

Ahh Я вижу, что вы уже опубликовали скрипку, но изменение, которое я определил здесь, может помочь. –

+0

Я извиняюсь за стандарт кодирования, просматривая учебники и продолжая инстинкт - это то, как я шел! Я отметил, как вы упростили заявления If для будущего Russ C! К сожалению, я до сих пор не могу понять, почему его все еще пропускают остальные утверждения:/ – JayJsNewbie

+0

Ничего извиниться; просто пытаясь предложить немного руководства, которое сделает вашу жизнь проще! –

Смежные вопросы