如果在Javascript中出现问题

时间:2014-03-13 03:08:43

标签: javascript if-statement addition subtraction

我在javascript中做一个条件语句。当用户在输入框中输入一个值"收集"时,其值与输入框" CurBal"的值一起输入。将执行添加并将答案放在名为" Balance"的输入框中。

如果用户在输入框"存储"中输入一个值,则其值将从" 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>

但是,它只是正确执行第一个条件。如果我在输入框中输入一个值&#34;存入&#34;,它不会从&#34; CurBal&#34;中减去该值,它只是从&#34; CurBal&#34复制值;

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

附加信息:用户只能输入一个值来收集&#34;收集&#34;或者&#34;平衡&#34;。

5 个答案:

答案 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)  {

但我总是建议编写最易读的版本来描述你的意思。

答案 1 :(得分: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)
{
...
} 

答案 2 :(得分:0)

您在第一次true测试中将collect.value分配给if。赋值表达式的值是赋值的值;在这种情况下true。因此,第一次测试将永远成功。您应该使用=====进行比较测试。 (如果需要,第一个运算符将转换类型; ===运算符只有在当前数据类型已经相同的情况下才会成功。)

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

答案 3 :(得分:0)

如果条件允许的话,你缺少双等号。 尝试改变条件。

if (collect.value != 0)

else if (dep.value != 0)

答案 4 :(得分: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");
}