javascript - 为什么我得到 NaN 值?

标签 javascript jquery json

我的 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数据为:

{"price":"52.00"}

这里,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/

相关文章:

javascript - that.init 不是函数 - Node.js

jquery - 每列列出 3 个 Bootstrap 缩略图

javascript - Bootstrap 中的分阶段捐赠表格

java - 如何访问 JSON 元素(数组)

javascript - 运行 node.js 服务器端脚本时出错

javascript - 数据表问题 : How can I click a checkbox and then highlight the row and vice versa?

javascript - 如何删除事件监听器?

javascript - Jquery - 创建一个 div 和其他子元素

javascript - 如何转换对象或数组中的字符串消息错误?

javascript - 农业网格企业与 react