我正在尝试使用以下脚本
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#item1_number_1').keyup(function() {
var valone = $('#item1_number_1').val();
var valtwo = 5;
var total = ((valone) + (valtwo));
$('#item2_number_1').val(total.toFixed(2));
});
});
</script>
我在这个领域没有得到任何结果。但是当我分配多个(*)而不是加号(+)时,我得到了结果。
我无法理解“var total =((valone)+(valtwo))”中的错误是什么;“
答案 0 :(得分:2)
输入的值始终是字符串。 “添加”字符串连接,给出另一个字符串。字符串没有toFixed
方法。
*
明确地“乘法”,给出一个数字,从而产生结果。
var valone = parseFloat(document.getElementById('item1_number_1').value);
答案 1 :(得分:2)
您只能在Numbers上拨打toFixed
。
String * String
会将字符串转换为数字,乘以它们会为您提供Number
。
String + String
将连接两个字符串,一起为您提供String
。
在尝试将字符串添加到一起之前,需要手动将字符串转换为数字。
var total = (+valone) + (+valtwo);
然后Number + Number
将添加这两个数字一起为您提供一个数字。
答案 2 :(得分:0)
使用parseInt()
将获取的值(valone
)转换为数字,并计算出类似的结果,请仅在您的数字不是浮点数(56.66
)时使用此项,
var valone = parseInt($('#item1_number_1').val(), 10);
var valtwo = 5;
var total = ((valone) + (valtwo));
将获取的vaue视为字符串,直到将其转换为数字。
<强>更新强>
在 Archer 指出之后,我发现你正在使用toFixed()
方法,它应该预期浮点数。因此,在这种情况下,您应该使用下面给出的parseFloat()
。
var valone = parseFloat($('#item1_number_1').val());
答案 3 :(得分:0)
我认为其中一个是字符串。尝试parseInt(valone)
使其成为第一个int。
答案 4 :(得分:0)
问题是+
运算符也可用于将字符串连接在一起。 *
运算符仅用于乘法,因此它会隐式地将您的值转换为数字。
因此,在使用parseInt
运算符之前,您需要使用parseFloat
,Number
或+
显式转换为数字类型。
答案 5 :(得分:0)
您之前也可以使用[+
]将其转换为数字。
var total = +valone + +valtwo;