Javascript中的If-Else问题

Javascript中的If-Else问题,javascript,if-statement,addition,subtraction,Javascript,If Statement,Addition,Subtraction,我正在用javascript编写一个条件语句。当用户在输入框“Collect”中输入一个值时,其值与输入框“CurBal”中的值一起执行加法,并将答案放入名为“Balance”的输入框中 如果用户在“存款”输入框中输入一个值,其值将从“路缘”中减去,差额也将反映在“余额”中 我有以下代码: var collect = parseFloat(document.getElementById("Collect").value) ||0; var dep = parseFloat(documen

我正在用javascript编写一个条件语句。当用户在输入框“Collect”中输入一个值时,其值与输入框“CurBal”中的值一起执行加法,并将答案放入名为“Balance”的输入框中

如果用户在“存款”输入框中输入一个值,其值将从“路缘”中减去,差额也将反映在“余额”中

我有以下代码:

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>

收藏:
存款:
经常项目差额:

根据下面的评论编辑

// 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)  {
但我始终建议编写最具可读性的版本,准确描述您的意思。

您有:

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
为true,您的其他条件将不会运行

需要注意的是,您还在
if
语句中执行赋值,实际上,您应该检查是否相等。事实上,你甚至不需要这样做;你可以做:

if (collect.value)
{
...
}

if (dep.value)
{
...
} 

在第一个
if
测试中,您将
true
赋值给
collect.value
。赋值表达式的值是赋值;在这种情况下,
true
。因此,第一次测试总是成功的。您应该使用
=
==
进行比较测试。(第一个操作符将在必要时转换类型;
=
操作符仅在当前数据类型已经相同时才会成功)


对于布尔值,最好使用
if(collect.value)
(等),而不是
if(collect.value==true)

if条件中缺少双等号。 试着改变条件

if (collect.value != 0)

else if (dep.value != 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");
}

=
用于赋值,
=
==
用于比较。如果我输入“if(collect.value==true)”,则在输入框“Balance”中没有“answer”,这可能是因为
collect
dep
中都有一个值,而这些值的计算结果不是
true
,因此,如果满足
条件,则两者都不满足。尝试将
if
条件更改为:
if(collect.value!=0)
您试图用该条件检查什么?另外,关于
curr
?您正在检查
collect
文本框是否有值,但不验证
curr
文本框是否有值。如果我输入“if(collect.value)”或“if(collect.value=true)”,则在输入框“Balance”中不会得到任何“答案”。这就是为什么我要用“if(collect.value=true)”,因为这样,我就得到了一个“答案”。这让人困惑。我想看看输入框中的值是否有,这样我就可以执行加法或减法。它应该是加或减,然后“答案”将被放入“bal”@user3373430-更新了我的答案,并做了一些解释。先生@Jeremy,谢谢。但是,第一个条件仍然正确执行。第二个条件不是。它只是从输入框“路缘”复制值。它仍在复制“curbal”中的值。其他信息,用户只需在“余额”或“存款”输入框中输入一个值即可。如果我输入==,我就不会得到任何结果。另外,当我尝试您的解决方案时,第一个条件是正确执行(加法)。但这种减法是不对的。它只是从路缘复制了值。>。谢谢@Preston S。我尝试了您的解决方案,第一个条件是正确执行(添加)。但这种减法是不对的。它只是从curbal@user3373430请包括您的html以便进一步分析