Javascript中的if语句- if - else问题

if statement - If-Else Issue In Javascript

本文关键字:if else 问题 语句 中的 Javascript      更新时间:2023-09-26

我在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>

但是,它只是正确地执行了第一个条件。如果我在"存款"输入框中输入一个值,它不会从"CurBal"中减去值,它只是复制了"CurBal"中的值。

应该删除、添加或更改哪些内容?谢谢你的帮助

附加信息:用户只能输入"Collect"或"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");
} 

听起来好像你需要这个:

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)
{
...
} 

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

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

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

if (collect.value != 0)
else if (dep.value != 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)  {

,但我总是建议写最易读的版本,准确地描述你的意思。

试试这个

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");
}