每次NaN显示时,都不会在jquery中进行乘法运算

时间:2016-05-07 13:59:01

标签: javascript jquery

我从span标签和文本框中获取值并将它们相乘但它不能正常工作。当我检查浏览器然后我播下来自span标签和文本框的值很好但是显示NaN的乘法值(totalprice)。

 $("#addintocart").click(function () {
        debugger;
        var productid = $("#product_id").text();
        var cartid = $("#userid").text();
        var quentity = $("#txt_quentity").val();
        var price = $("#p_price").text();
        var totalprice =(quentity * price);
        $.ajax({
            url: '/Product/AddInCart',
            type: 'GET',
            data: { cartid: cartid, productid: productid, quentity: quentity, totalprice: totalprice },
            contentType: 'application/json; charset=utf-8',
            success: function (response) {
                //your success code
                // also count total 
                alert("Success");
               // Successnotify();

                });
            },
            error: function () {
                alert("some error");
            }

        });
    })

4 个答案:

答案 0 :(得分:0)

你可以检查

var totalprice =(Number(quentity) * Number(price));

答案 1 :(得分:0)

您使用$ .text()将价格作为字符串。在javascript中将数字与字符串相乘时,您将获得值NaN。尝试使用Number()函数转换值。

答案 2 :(得分:0)

将它们解析为数字。

  1. var totalprice = parseInt(quentity) * parsefloat(price);
  2. var totalprice = (~~quentity) * parseFloat(price);

答案 3 :(得分:0)

您正在返回字符串,需要将它们转换为数字。

如果您有标准数字输入,则parseFloatNumber之间没有区别。当您的输入以数字开头并包含其他字符时parseFloat会截断字符串中的数字,而Number返回NaN(不是数字):

parseFloat('23x'); // => 23
Number('23x'); // => NaN

Number也理解23e5(2300000)

之类的符号

另一件事是你可以使用+,它的行为就像Number

var totalprice = (Number(quentity) * Number(price));

var totalprice = (+quentity) * (+price);

注意两者都会翻译' 023'到八进制,这是19数字(十进制)

请注意,有些不清楚quentity是否为数量,如果是,数量通常是整数,因此您可能会考虑parseInt这个数字