我的代码存在问题。
$('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并且我不知道为什么。你能帮帮我吗?
答案 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'));
用第二行替换第一行解决了我的问题。