我遇到了这个问题。它使用parseFloat或parseInt添加数字。 IF textbox1值为4,textbox2值为2,然后输出为(参见脚本)
我怀疑是添加单独
的原因
parseFloat($('#txt1').val()) + parseFloat($('#txt2').val())
给出正确的值,但
parseFloat($('#txt1').val() + $('#txt2').val())
没有给出正确的值,而
parseFloat($('#txt1').val() - $('#txt2').val())
,parseFloat($('#txt1').val() / $('#txt2').val())
,parseFloat($('#txt1').val() * $('#txt2').val())
正在给出正确的价值。 它简单但我找不到解决方案。
===== jQuery的
function Calculate() { //--> Output
$('#lbl1').html(parseFloat($('#txt1').val() + $('#txt2').val())); //--> 42
$('#lbl2').html(parseFloat($('#txt1').val()) + parseFloat($('#txt2').val())); //--> 6
$('#lbl3').html(parseFloat(4 + 2)); //--> 6
$('#lbl4').html(parseFloat($('#txt1').val() - $('#txt2').val())); //--> 2
$('#lbl5').html(parseFloat($('#txt1').val() * $('#txt2').val())); //--> 8
$('#lbl6').html(parseFloat($('#txt1').val() / $('#txt2').val())); //--> 2
}
===== HTML
<table>
<tr>
<td>
<input type="text" id="txt1" />
</td>
<td>
<input type="text" id="txt2" />
</td>
</tr>
<tr>
<td>
<input type="button" value="Calculate" onclick="Calculate()" />
</td>
<td>
<label id="lbl1">
</label>
|
<label id="lbl2">
</label>
|
<label id="lbl3">
</label>
|
<label id="lbl4">
</label>
|
<label id="lbl5">
</label>
|
<label id="lbl6">
</label>
</td>
</tr>
</table>
答案 0 :(得分:10)
$.val()
返回一个字符串值。
因此,在您的第一个示例中,您将两个返回的字符串转换为数字,并且计算正常。
如果使用parseFloat($('#txt1').val() + $('#txt2').val())
,+
不能作为算术运算符,而是作为字符串连接。所以你连接两个字符串并在之后转换它们,这会产生错误的结果。
使用-
的示例将起作用,因为没有使用-
的字符串操作,因此所有值都会在应用操作之前隐式转换为数字。
答案 1 :(得分:1)
$('#txt1').val() + $('#txt2').val()
它给出了字符串值
你不能在字符串上使用 - ,*,/ operator
parseFloat($('#txt1').val()), parseFloat($('#txt2').val())
返回的数字不是字符串