我在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> 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>
但是,它只是正确执行第一个条件。如果我在输入框中输入一个值&#34;存入&#34;,它不会从&#34; CurBal&#34;中减去该值,它只是从&#34; CurBal&#34复制值;
应删除或添加或更改的内容?谢谢你的帮助
附加信息:用户只能输入一个值来收集&#34;收集&#34;或者&#34;平衡&#34;。
答案 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");
}