此代码在揭示和隐藏容器的过程中完全正常运行,但计算产生的是NaN。我之前从未尝试过使用JQuery的数学,所以有人可能会告诉我哪里有错误。
function product_analysis_global() {
$(':checked').each(function(){
$('#product_' + this.alt).css('display','block');
$('#product_quantity_PRI_' + this.alt).val(this.value);
var quantity = $('#product_quantity_PRI_' + this.alt).val;
var price = $('#product_price_PRI_' + this.alt).val;
var duration = $('#product_duration_PRI_' + this.alt).val;
var dives = $('#product_dives_PRI_' + this.alt).val;
var hire = $('#product_quantity_PRI_' + this.alt).val;
$('#product_price_total_PRI_' + this.alt).val(price * quantity);
$('#product_duration_total_PRI_' + this.alt).val(duration * quantity);
$('#product_dives_total_PRI_' + this.alt).val(dives * quantity);
$('#product_hire_total_PRI_' + this.alt).val(hire * quantity);
});
$(':not(:checked)').each(function(){
$('#product_' + this.alt).css('display','none');
$('#product_quantity_PRI_' + this.alt).val('0');
var quantity = $('#product_quantity_PRI_' + this.alt).val;
var price = $('#product_price_PRI_' + this.alt).val;
var duration = $('#product_duration_PRI_' + this.alt).val;
var dives = $('#product_dives_PRI_' + this.alt).val;
var hire = $('#product_quantity_PRI_' + this.alt).val;
$('#product_price_total_PRI_' + this.alt).val(price * quantity);
$('#product_duration_total_PRI_' + this.alt).val(duration * quantity);
$('#product_dives_total_PRI_' + this.alt).val(dives * quantity);
$('#product_hire_total_PRI_' + this.alt).val(hire * quantity);
}); }
非凡
答案 0 :(得分:5)
您的所有.val
(无括号)都需要括号后跟()
。否则,您将获得val
函数,而不是函数返回的实际值。
E.g。
var quantity = $('#product_quantity_PRI_' + this.alt).val(); // brackets
另外,小心与.val()
,后面会返回字符串。在您的场景中,此处没有错误,因为您只进行乘法,并且字符串将自动转换为数字。但是,如果您有其他内容,字符串将会连接:'1' + '1' = '11'
。为了防止这种情况(即使在你的例子中也是安全的),在.val()
的返回值前加一个加号,将字符串转换为数字:
var quantity = +$('#product_quantity_PRI_' + this.alt).val();
答案 1 :(得分:2)
使用.val()
代替.val
答案 2 :(得分:0)
你可能用字符串计算。如果x是数字,则如果有疑问,请使用:
parseInt(x)
确定是一个数字。