加上Jquery中的运算符问题

时间:2014-03-04 13:39:14

标签: javascript jquery

我正在尝试使用以下脚本

<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))”中的错误是什么;“

6 个答案:

答案 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运算符之前,您需要使用parseFloatNumber+显式转换为数字类型。

答案 5 :(得分:0)

您之前也可以使用[+]将其转换为数字。

var total = +valone + +valtwo;

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#.2b_(Unary_Plus%29