Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.12.2010, 02:26
Интересующийся
Отправить личное сообщение для niZE Посмотреть профиль Найти все сообщения от niZE
 
Регистрация: 31.12.2010
Сообщений: 11

Конвертер,не грузиться нужное условие
Доброго время суток.Мне тут недавно понадобилось сделать конвертер валют.В принципе ничего сложного,но у меня возникла проблема.Дело в том,что когда я выбираю 2 валюты нужные,ввожу в поле ввода сумму,нажимаю на кнопку конвертировать оно не обрабатывает нужный мне запрос.Объясняю.У меня есть тэг select,в нём option'ы я нахожу их.Потом я с помощью цикла я записываю в переменную option.value но делаю это просто записью(тобиш "=",а не "+=").Потом у меня идёт if (curr == 'Doll' && curr1 == 'Euro') {
getMoneyToConvert = monToConv.value / dol_gr;
}

dol_eur - это как-бы курс.
getMoneyToConvert = куда записываеться значение
monToConv.value = это то самое поле ввода

и у меня получилось 6 условий.И у меня возникает проблема в том что иногда выполняеться действие не умножения как надо,а деления например.Или вообще игнорируется это условие.

Если кто знает из-за чего может быть проблема подскажите.Я уже как-только мог голову сломал.
Ответить с цитированием
  #2 (permalink)  
Старый 31.12.2010, 07:21
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

Вот вам быстренько написал работающий скрипт конвертирования валют, используйте для своих нужд, думаю разберётесь что к чему:
<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: курс

Последний раз редактировалось Vulkan, 31.12.2010 в 07:27.
Ответить с цитированием
  #3 (permalink)  
Старый 31.12.2010, 12:59
Интересующийся
Отправить личное сообщение для niZE Посмотреть профиль Найти все сообщения от niZE
 
Регистрация: 31.12.2010
Сообщений: 11

спасибо большое конечно,но мне честно говоря очень интересно почему условия работают некорректно.
// Конвертер валют
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="Конвертировать" />


если кому не сложно,можете указать на ошибку?повторяю,условия почему-то работают не те которые должны
Ответить с цитированием
  #4 (permalink)  
Старый 31.12.2010, 16:31
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от niZE
} else
22 if(current == 'Dollar' && current1 == 'Euro') {
23 getMoneyToConvert = (monToConv.value / dol_eur);
24 }
else{
22 if(current == 'Dollar' && current1 == 'Euro') {
23 getMoneyToConvert = (monToConv.value / dol_eur);
24 }
......
вобщем пересмотри все скобки
Ответить с цитированием
  #5 (permalink)  
Старый 31.12.2010, 16:37
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

dmitriymar, всё правильно у него со скобками, у него просто оператор else if там, а если добавить скобку которую ты сказал то будет ошибка, т.к. она будет лишняя.
Ответить с цитированием
  #6 (permalink)  
Старый 31.12.2010, 16:44
Интересующийся
Отправить личное сообщение для niZE Посмотреть профиль Найти все сообщения от niZE
 
Регистрация: 31.12.2010
Сообщений: 11

абсолютно верно.просто сначала я использовал else if потом подумал,а мало-ли,и решил перейти просто на на кучу if'ов,и когда ничего опять не заработало вернулся к else if.
Ответить с цитированием
  #7 (permalink)  
Старый 31.12.2010, 17:16
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

ну не вчитывался в его логику и посчитал что елсе у него не обрамлено скобками-вторую не ставил потому что не известно что у него в елсе должно было входить. ставь алерты в блоки ветвлений и тестируй. вчитываться не хочу .но проверяй соответствие вход значений в ветвление с теми какие должны быть правильными ну и соответственно значения данных для мат формул.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие типа для flv nemo Серверные языки и технологии 1 29.01.2010 17:52