此代码在揭示和隐藏容器的过程中完全正常运行,但计算产生的是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);
Run Code Online (Sandbox Code Playgroud)
}); }
奇妙
你所有.val的(没有括号)都需要括号:().否则,您将获得val 函数而不是函数返回的实际值.
例如
var quantity = $('#product_quantity_PRI_' + this.alt).val(); // brackets
Run Code Online (Sandbox Code Playgroud)
此外,要小心使用.val(),它返回一个字符串.在您的场景中,此处没有错误,因为您只进行乘法,并且字符串将自动转换为数字.但是,如果你有加法,字符串将被连接起来:'1' + '1' = '11'.为了防止这种情况(即使在你的例子中也是安全的),在返回值前面放一个加号,.val()将字符串转换为数字:
var quantity = +$('#product_quantity_PRI_' + this.alt).val();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |