2014-03-13 3 views
0

Я делаю условный оператор в javascript. Когда пользователь вводит значение в поле ввода «Собрать», его значение вместе со значением из поля ввода «CurBal» выполнит добавление и поместит ответ в поле ввода «Баланс».If-Else Issue In Javascript

Если пользователь вводит значение в поле ввода «вклад», его значение будет вычтено из «CurBal», а разница будет также отражена (предположительно) в «балансе»

я это код:

var collect = parseFloat(document.getElementById("Collect").value) ||0; 
var dep  = parseFloat(document.getElementById("Deposit").value) ||0; 
var curr = parseFloat(document.getElementById("CurBal").value) ||0; 
var bal  = document.getElementById("Balance"); 

if (collect.value = true) 
{ 
bal.value = (collect + curr).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 

else if (dep.value = true) 
{ 
bal.value = (curr - dep).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 

HTML-:

<tr> 
<td> &nbsp;Collections: </td> 
<td> &nbsp; <input onchange="addNumbers()" type="text" id="Collect" name="Collect" value="" /> </td> 
</tr> 

<tr> 
<td> &nbsp;Deposits:</td> 
<td> &nbsp;<input onchange="addNumbers()" type="text" id="Deposit" name="Deposit" value="" /> </td> 
</tr> 

<tr> 
<td> &nbsp;Current Balance: </td> 
<td> &nbsp;<input onchange="addNumbers()" type="text" id="CurBal" name= "CurBal" value="<?php echo $all['balance']; ?>" readonly="readOnly" /> </td> 
</tr> 

<tr> 
<td> &nbsp;Balance: </td> 
<td> &nbsp;<input type="text" id="Balance" name="Balance" value="" readonly="readOnly" /> </td> 
</tr> 

Но, его просто выполняя первое условие правильно. Если я ввела значение в поле ввода «Депозит», это не вычитает значение из «CurBal», а просто копирует значение из «CurBal».

Что следует удалить или добавить или изменить? Спасибо за помощь

Дополнительная информация: Пользователь может только ИДЕТ ввести значение «Собрать» ИЛИ «Баланс».

+4

'=' для присваивания, '==' или '' === для сравнения. – thefourtheye

+0

если я положил «if (collect.value == true)», в поле ввода «НОМЕР» нет «ответа» – LadyWinter

+0

Это, вероятно, потому, что есть значение как в 'collect', так и' dep', и эти значения не оценивайте значение 'true', поэтому условие' if' не выполняется. Попробуйте изменить условия 'if':' if (collect.value! = 0) ' –

ответ

0

РЕДАКТИРОВАНИЕ НА КОММЕНТАРИИ НИЖЕ

// Collect is now a number 
var collect = parseFloat(document.getElementById("Collect").value) ||0; 

// dep is now a number 
var dep  = parseFloat(document.getElementById("Deposit").value) ||0; 

// Cur is now a number 
var curr = parseFloat(document.getElementById("CurBal").value) ||0; 

// bal is now pointing to an element 
var bal  = document.getElementById("Balance"); 


// What are you trying to compare here? That bal !== 0 perhaps? 
// Collect is a number, so we can do the compare here. 
if (collect !== 0) { 
bal.value = (collect + curr).toFixed(2) 


// Dep, on the other hand, is pointing to an element 
// so we use the property here 
// The leading '+' is a quick way to turn the string value (dep.value is a string) 
// into a number. 
} else if (+dep.value !== 0) { 
bal.value = (curr - dep).toFixed(2) 
} 

** Примечания ** Линия:

if (collect !== 0) { 

можно записать короче

if (collect) { 

, но я всегда рекомендую писать наиболее читаемая версия, которая точно описывает ты имеешь в виду.

+0

Я пытаюсь увидеть, имеет ли поле ввода значение, чтобы я мог выполнять сложение или вычитание. Предполагалось либо добавить, либо вычесть, а затем «ответ» будет помещен в «bal» – LadyWinter

+0

@ user3373430 - Обновлен мой ответ с небольшим количеством объяснений. –

+0

Сэр @ Джереми, спасибо. Но все же первое условие выполняется правильно. Второе условие - нет. он копирует только значение из поля ввода «curbal». >. < – LadyWinter

0

У вас есть это:

if (collect.value = true) 
{ 
bal.value = (collect + curr).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 

else if (dep.value == true) 
{ 
bal.value = (curr - dep).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 

Это звучит так, как будто вам нужно это:

if (collect.value = true) 
{ 
bal.value = (collect + curr).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 

if (dep.value == true) 
{ 
bal.value = (curr - dep).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 

У вас есть else if состояние, так что если collect.value верно, ваши другие условия не будут работать.

Обратите внимание: вы также выполняете назначение в своих операциях if, когда на самом деле вы должны проверять равенство. На самом деле вам даже не нужно этого делать; вы можете сделать:

if (collect.value) 
{ 
... 
} 

if (dep.value) 
{ 
... 
} 
+0

если я положил «if (collect.value)» или «if (collect.value = true)», я не получаю никакого «ответа» в поле ввода «Баланс». поэтому я помещаю «if (collect.value = true)», потому что с этим я получаю «ответ». Это смущает. – LadyWinter

0

Вы назначаете true к collect.value в первом if тесте. Значение выражения присваивания - это назначенное значение; в этом случае true. Таким образом, первый тест всегда будет успешным. Для сравнительных тестов вы должны использовать == или ===. (При необходимости первый оператор преобразует типы, оператор === будет успешным только в том случае, если текущие типы данных уже совпадают).

Для булевых значений лучше использовать if (collect.value) (и т. Д.), А не if (collect.value == true).

0

вам не хватает двойной знак равенства, если условие. попробуйте изменить состояние.

if (collect.value != 0) 

else if (dep.value != 0) 
+0

если я положил ==, я не получаю никаких результатов. Кроме того, когда я попробовал ваше решение, первое условие выполняется правильно (добавление). Но вычитание неверно. Он просто скопировал значение из карбала. >. < – LadyWinter

0

Попробуйте

var collect = parseFloat(document.getElementById("Collect").value) ||0; 
var dep  = parseFloat(document.getElementById("Deposit").value) ||0; 
var curr = parseFloat(document.getElementById("CurBal").value) ||0; 
var bal  = document.getElementById("Balance"); 

if (collect != 0) 
{ 
bal.value = (collect + curr).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 

else if (dep != 0) 
{ 
bal.value = (curr - dep).toFixed(2) 
bal  = document.getElementById("Balance"); 
} 
+0

Спасибо @Престон С. Я попробовал ваше решение, первое условие выполняется правильно (добавление). Но вычитание неверно. Он просто копирует значение из curbal – LadyWinter

+0

@ user3373430 пожалуйста, включите ваш html для дальнейшего анализа –

+0

Я добавил HTML уже сэр. благодаря – LadyWinter