2013-06-27 4 views
2

У меня есть два раскрывающихся списка, и я хочу, чтобы текстовое поле обновлялось со значением, основанным на выбранных текстах из двух полей. Если выбрано первое поле «доллары», а второе - «Найра», я хочу, чтобы скорость была равна 100, и это значение вводилось в текстовое поле с идентификатором скорости.Javascript If statement with boolean value

К сожалению, когда моя функция выполняется, я продолжаю получать значение неопределенного. Что-то явно не соответствует моему утверждению if, но я не могу понять это. Мне нужно сделать это с помощью чистого javascript, а не jquery.

Вот мой код:

<p>Select currency to send</p> 
<select id="fromCurrency"> 
<option value = "Dollars">Dollars</option> 
<option value = "Pounds">Pounds</option> 
<option value = "Naira">Naira</option> 
</select> 

<p>Select currency to receive</p> 
<select id="toCurrency"> 
<option value = "Naira">Naira</option> 
<option value = "Dollars">Dollars</option> 
<option value = "Pounds">Pounds</option> 

</select><br /> 
<label>Enter amount to send</label> 
<input type="text" id="amount" name="amount"><br /> 
<button onclick ="getRate()">Get Rate</button><br /> 
<label>Rate:</label> 
<input type="text" id="rate" name="rate"><br /> 
<label>Total:</label> 
<input type="text" id="total" name="total"><br /> 



<script> 

function getRate() { 
var e = document.getElementById("fromCurrency"); 
var eSend = e.options[e.selectedIndex].value; 
var i = document.getElementById('toCurrency'); 
var eReceive = i.options[i.selectedIndex].value; 
var rate = document.getElementById('rate'); 

var dollars = { 
'pounds':20, 
'naira':15 
}; 


if (eSend =='dollars' && eReceive =='naira') { 
var rValue= (dollars['pounds']); 
}; 
rate.value = rValue; 

}; 
</script> 

Пожалуйста, советы.

EDIT: Я попытался использовать оператор switch, поскольку у меня есть около 6 различных условий, и это то, что я пробовал, но это не сработало.

var rValue = 0; 

switch (rValue) { 
case (eSend =='Dollars' && eReceive =='Naira'): 
rValue= (dollars['naira']); 
break; 
case (eSend =='Dollars' && eReceive =='Pounds'): 
rValue= (dollars['pounds']); 
break; 
} 

rate.value = rValue; 
+0

'если (eSend = = 'Dollars' && eReceive == 'Naira') ' – claustrofob

+0

rValue не задано, если только если огонь срабатывает. – Rooster

+0

и btw вы можете сделать просто 'var eSend = e.value;' и 'var eReceive = i.value;' – claustrofob

ответ

5

JavaScript чувствителен к регистру, ваш, если заявление:

if (eSend =='dollars' && eReceive =='naira') { 

ищет dollars, не Dollars, прописными буквами в соответствии с вашими select значения:

if (eSend =='Dollars' && eReceive =='Naira') { 
+0

darn вы нашли его первым, хорошая работа – Stephan

+0

Спасибо за быстрый ответ. Это сработало! См. Дополнительную информацию, которую я добавил о операторах switch. –

+0

Хорошо, что ваш оператор switch не работает, потому что нет случаев 0. – tymeJV