JS添加操作返回char + char,而不是int + int

时间:2015-12-01 16:05:06

标签: javascript jquery

$(function() {
    $("input[class$='m_value']").keyup(function() {

        var val1 = $('#v1').val();
        var val2 = $('#v2').val();
        var val3 = $('#v3').val();

        var total = val1+val2+val3;

        $( "#total" ).val( total );
    });
});

如果#v1 = 1#v2 = 5

我会得到15,而不是6

为什么代码只是char + char ...?这不是int + int。

2 个答案:

答案 0 :(得分:4)

因为您正在使用字符串。在val元素上使用时input的返回值总是一个字符串。 (在select元素multiple上,它可以是null或数组;如果你在一个完全没有元素的jQuery集上调用它,它将是{{1 }})。

首先,使用一元undefined+parseIntparseFloat将您的值转换为数字。

使用一元Number的示例(前三行更改):

+

This answer列出了转换为数字的各种方式及其各种特性。

答案 1 :(得分:0)

val()函数以文本形式读取所有内容。如果这三个元素的输入始终是整数,则可以使用parseInt将值转换为整数。

$(function() {
    $("input[class$='m_value']").keyup(function() {

    var val1 = parseInt($('#v1').val());
    var val2 = parseInt($('#v2').val());
    var val3 = parseInt($('#v3').val());

    var total = val1+val2+val3;

    $( "#total" ).val( total );
    });
});

以下是ParseInt上的JavaScript参考。