Конвертер,не грузиться нужное условие
Доброго время суток.Мне тут недавно понадобилось сделать конвертер валют.В принципе ничего сложного,но у меня возникла проблема.Дело в том,что когда я выбираю 2 валюты нужные,ввожу в поле ввода сумму,нажимаю на кнопку конвертировать оно не обрабатывает нужный мне запрос.Объясняю.У меня есть тэг select,в нём option'ы я нахожу их.Потом я с помощью цикла я записываю в переменную option.value но делаю это просто записью(тобиш "=",а не "+=").Потом у меня идёт if (curr == 'Doll' && curr1 == 'Euro') {
getMoneyToConvert = monToConv.value / dol_gr; } dol_eur - это как-бы курс. getMoneyToConvert = куда записываеться значение monToConv.value = это то самое поле ввода и у меня получилось 6 условий.И у меня возникает проблема в том что иногда выполняеться действие не умножения как надо,а деления например.Или вообще игнорируется это условие. Если кто знает из-за чего может быть проблема подскажите.Я уже как-только мог голову сломал. |
Вот вам быстренько написал работающий скрипт конвертирования валют, используйте для своих нужд, думаю разберётесь что к чему:
<script type="text/javascript"> function $(id) { //вспомогательная функция return document.getElementById(id); } function convert() { var currency = { //объект с курсами валют dollar: 30.4, euro: 40.3, rub: 1 }; $('result').innerHTML = $('amount').value * (currency[$('c1').value] / currency[$('c2').value]); //конвертирование и вставка } </script> Кол - во: <input type="text" id="amount"/> <select id="c1"> <option value="dollar">Доллары</option> <option value="rub">Рубли</option> <option value="euro">Евро</option> </select> в <select id="c2"> <option value="rub">Рубли</option> <option value="euro">Евро</option> <option value="dollar">Доллары</option> </select> <input type="button" value="Конвертировать" onclick="convert();"/> <div id="result"></div> Если нужно будет добавить новую валюту добавляйте в тот и тот список select например <option value="cur1">Валюта 1</option>, а в скрипте в объект currency такую запись: , cur1: курс |
спасибо большое конечно,но мне честно говоря очень интересно почему условия работают некорректно.
// Конвертер валют dol_gr = 2; eur_gr = 4; dol_eur = 6; from_gr = "Доллары"; griv = "Гривна"; function converter() { monToConv = document.getElementById('typeInMoney'); convertedMon = document.getElementById('exchangedMoney'); getSelectCurrency = document.getElementById('selectCurr'); getSelectCurrency1 = document.getElementById('selectCurr1'); gSCopt = getSelectCurrency.options; gSCopt1 = getSelectCurrency1.options; for(i=0;i<gSCopt.length;i++){ current = gSCopt.item(i).value; for(j=0;j<gSCopt1.length;j++){ current1 = gSCopt1.item(j).value; if(current == 'Dollar' && current1 == 'Grivna'){ getMoneyToConvert = monToConv.value * dol_gr; } else if(current == 'Dollar' && current1 == 'Euro') { getMoneyToConvert = (monToConv.value / dol_eur); } if(current == 'Euro' && current1 == 'Grivna'){ getMoneyToConvert = monToConv.value * eur_gr; } if(current == 'Euro' && current1 == 'Dollar'){ getMoneyToConvert = (monToConv.value * dol_eur); } if(current == 'Grivn' && current1 == 'Dollar1'){ getMoneyToConvert = monToConv.value / dol_gr; } if(current == 'Grivn' && current1 == 'Euro1'){ getMoneyToConvert = monToConv.value / eur_gr; } } } convertedMon.value = getMoneyToConvert; } это код моего скрипта(наверно сильно громоздкий,но я только начинаю работать),а вот кусок HTML <select id='selectCurr'><option id='Dollar' value="Dollar">Dollar</option><option id='Euro' value="1">Euro</option><option id='Grivn' value="3">Grivna</option></select><br /> <input type="text" id="typeInMoney" name="Money" size="10"/><span id='CurName'></span> <select id='selectCurr1'><option id='Dollar1' value="Dollar">Dollar</option><option id='Euro1' value="Euro">Euro</option><option id='Grivn1' value="Grivna">Grivna</option></select><br /> <input type="text" id="exchangedMoney" name="Grivna" readonly="readonly" value="" size="10"/><span id='CurName1'></span><br /> <input type="button" onclick="converter()" value="Конвертировать" /> если кому не сложно,можете указать на ошибку?повторяю,условия почему-то работают не те которые должны |
Цитата:
22 if(current == 'Dollar' && current1 == 'Euro') { 23 getMoneyToConvert = (monToConv.value / dol_eur); 24 } ...... вобщем пересмотри все скобки |
dmitriymar, всё правильно у него со скобками, у него просто оператор else if там, а если добавить скобку которую ты сказал то будет ошибка, т.к. она будет лишняя.
|
абсолютно верно.просто сначала я использовал else if потом подумал,а мало-ли,и решил перейти просто на на кучу if'ов,и когда ничего опять не заработало вернулся к else if.
|
ну не вчитывался в его логику и посчитал что елсе у него не обрамлено скобками-вторую не ставил потому что не известно что у него в елсе должно было входить. ставь алерты в блоки ветвлений и тестируй. вчитываться не хочу .но проверяй соответствие вход значений в ветвление с теми какие должны быть правильными ну и соответственно значения данных для мат формул.
|
Часовой пояс GMT +3, время: 07:39. |