Javascript中的If-Else问题
我正在用javascript编写一个条件语句。当用户在输入框“Collect”中输入一个值时,其值与输入框“CurBal”中的值一起执行加法,并将答案放入名为“Balance”的输入框中 如果用户在“存款”输入框中输入一个值,其值将从“路缘”中减去,差额也将反映在“余额”中 我有以下代码: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
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> Collections: </td>
<td> <input onchange="addNumbers()" type="text" id="Collect" name="Collect" value="" /> </td>
</tr>
<tr>
<td> Deposits:</td>
<td> <input onchange="addNumbers()" type="text" id="Deposit" name="Deposit" value="" /> </td>
</tr>
<tr>
<td> Current Balance: </td>
<td> <input onchange="addNumbers()" type="text" id="CurBal" name= "CurBal" value="<?php echo $all['balance']; ?>" readonly="readOnly" /> </td>
</tr>
<tr>
<td> Balance: </td>
<td> <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以便进一步分析