从动态创建的数据进行计算的结果获取 NaN

Getting NaN as result of a calculation from data that was dynamically created

本文关键字:结果 计算 获取 NaN 动态 创建 数据      更新时间:2023-09-26

嗨,我在使用 change 方法更新计算结果时遇到问题。

计算是根据放置在表行中的动态创建的数据进行的。因此,每行的最后一列应显示价格 * 数量的总和(数量派生自动态创建的 select 元素(。创建每一行的方法是从自动完成输入框中选择一个选项。

每次用户从 dt 中的选择元素中选择选项时,都应更新该行的总数。 它第一次有效,但第二次结果列变为 NaN。

jSfiddle

我想我可能在如何使用

 $("tr").not(":first").each(function(){// meant to not get the header but the rest of the rows which have the data for the calculations 

我从字符串中减去 0 将其变成一个数字,所以我认为我不应该得到 NaN。我知道我搞砸了一些事情,对你来说似乎很明显,但对我来说却不是。

 $("tr").not(":first").each(function(){
     var qnty = 0;
    $('select').change(function(){
        qnty = $('select').val();
        calcTotal();
    })
    function calcTotal(){
       var price = (($(".price").text()) - 0).toFixed(2)
        $(".total").text(qnty * price);
    }
 })

总结一下问题。 从第二次创建包含数据的行开始,计算将不起作用。结果列中的结果为 NaN。我显然希望结果是计算"总计"列中每一行的qnty *价格。

这里是jSfiddle来说明我的问题。

这将是

代码:

$("tr").not(":first").each(function(){
     var qnty = 0;
     var $row=this;
    $('select',$row).change(function(){
        qnty = $('select',$row).val();
        calcTotal($row);
    })
    function calcTotal($row){
       var price = (($(".price",$row).text()) - 0).toFixed(2)
        $(".total",$row).text(qnty * price);
    }
 })