我的jQuery是:

$("#listDB").on("change", ".qfStyle", function(event) {
    var id = $(this).parents("tr").find('.itemCbox').val();
    $qnty = $("#qnty"+id);
    $unit = $("#unit"+id);
    $price = $("#price"+id);

    if($(this).parents("tr").find('.pbo').text()=="Kilos")
    {
        if(this.value<1)
        {
            $qnty.text(this.value*1000);
            $unit.text("gm");

            var data = "action=getPrice&id="+id;
            $.post("addBill.php", data, function(json) {
                alert(json.price);
                $price.text(json.price*this.value);
            }, 'json');
        }
    }
});

服务器返回的JSON数据为:



在这里,this指的是一个文本框。我得到表达式的值NaN:
$price.text(json.price*this.value);

但是我确保this.valuejson.price都是数字。那么,乘以它们为什么会得到NaN?

最佳答案

问题在于this不在post函数的范围内。

检查下面的代码。我添加了一个新的value变量,该变量保存this.value的值,即使在post函数中也应可用。

$("#listDB").on("change", ".qfStyle", function(event) {
    var id = $(this).parents("tr").find('.itemCbox').val();
    $qnty = $("#qnty"+id);
    $unit = $("#unit"+id);
    $price = $("#price"+id);

    var value = this.value;

    if($(this).parents("tr").find('.pbo').text()=="Kilos")
    {
        if(value<1)
        {
            $qnty.text(value*1000);
            $unit.text("gm");

            var data = "action=getPrice&id="+id;
            $.post("addBill.php", data, function(json) {
                alert(json.price);
                $price.text(json.price*value);
            }, 'json');
        }
    }
});

关于javascript - 为什么我会得到NaN值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41374330/

10-13 00:21