Javascript计算价格总和*数量返回NaN

时间:2014-03-04 13:37:11

标签: javascript

我的代码存在问题。

$('input[name="pocet"]').each(function(){
                var $mnozstvo = parseInt($('this').val());
                var $id = parseInt($(this).attr('id').substring(6));
                var $aktualnyProdukt = $('#' + $id);
                var $povodnaCena = parseFloat($aktualnyProdukt.data('price'));
                var $riadkoveZlavy = $aktualnyProdukt.find('div .vypocetPreZlavu');
                var $aktualnaCena = $povodnaCena;
                if($riadkoveZlavy.length > 0) {
                    $riadkoveZlavy.each(function() {
                        $mnozstvoNaZlavu = parseInt($(this).data('mnozstvo'));
                        $cenaPoZlave = parseFloat($(this).data('cena'));

                        if($mnozstvo >= $mnozstvoNaZlavu) {
                            $aktualnaCena = $cenaPoZlave;
                        }
                    });
                }

                if(isNaN($mnozstvo)) $mnozstvo = 0;
                total += $mnozstvo * $aktualnaCena;
});

然而,在运行此函数后,总返回NaN并且我不知道为什么。你能帮帮我吗?

HTML:    http://jsfiddle.net/UL7Sr/

2 个答案:

答案 0 :(得分:4)

var $mnozstvo = parseInt($('this').val());实际应该是var $mnozstvo = parseInt($(this).val());

此外,请确保$aktualnaCena是一个数字。您对$mnozstvo执行此操作,但不对$aktualnaCena执行此操作。尝试:

if(isNaN($mnozstvo)) $mnozstvo = 0;
if(isNaN($aktualnaCena)) $aktualnaCena = 0;
total += $mnozstvo * $aktualnaCena;

另外,请不要在$前加上所有变量的前缀。 JavaScript不是PHP。使用jQuery时的惯例是,您可以为jQuery元素变量执行此操作以区别于其他变量。如果你将它用于该上下文中的所有变量,那实际上是令人困惑的。

答案 1 :(得分:0)

var $povodnaCena = parseFloat($aktualnyProdukt.data('price'));

var $povodnaCena = parseFloat($aktualnyProdukt.attr('data-price'));

用第二行替换第一行解决了我的问题。