从函数中获取变量并在事件中运行它
问题描述:
我有一个计算价格的函数。变量totalPrice
计算选择的总数。然后我写totalPrice
到一个div。从函数中获取变量并在事件中运行它
我的问题是,我在正文上运行更改事件,我试图在更改事件中运行calcTotalPrice
函数,然后尝试访问totalPrice
变量,但它给了我未定义的变量错误。
如何从我的函数中获取调整的totalPrice
变量并在事件中运行它?
function calcTotalPrice() {
var totalPrice = 0;
var discountPrice = 0;
if (package1.is(':checked') && package2.is(':checked')) {
$('.calendar-check:checked').each(function() {
var calSoloPrice = ($(this).data('solo-price'));
var calCombinedPrice = ($(this).data('combined-price'));
totalPrice += parseInt($(this).data('combined-price'));
discountPrice += calSoloPrice - calCombinedPrice;
});
$('.tp-pack-check:checked').each(function() {
var tpSoloPrice = ($(this).data('solo-price'));
var tpCombinedPrice = ($(this).data('combined-price'));
totalPrice += parseInt($(this).data('combined-price'));
discountPrice += tpSoloPrice - tpCombinedPrice;
});
$('#package-review-savings').html("<div class='discountMed'>You will be saving $" + discountPrice + " per order by bundling your product package.</div>");
}
else {
if (package1.is(':checked')) {
$('.calendar-check:checked').each(function() {
totalPrice += parseInt($(this).data('solo-price'));
});
}
if (package2.is(':checked')) {
$('.tp-pack-check:checked').each(function() {
totalPrice += parseInt($(this).data('solo-price'));
});
}
}
$('#package-review-total').html("$" + totalPrice);
};
$('body').on('change', function() {
calcTotalPrice();
console.log("Total Price" + totalPrice);
});
答
您已经定义了函数内的变量。那么它只存在于该范围内。
如果您从定义中删除var
,您将能够全局访问(尽管我强烈不建议这样做)。
更好的策略是你的函数返回计算值:
function calcTotalPrice() {
var totalPrice = 0;
var discountPrice = 0;
if (package1.is(':checked') && package2.is(':checked')) {
$('.calendar-check:checked').each(function() {
var calSoloPrice = ($(this).data('solo-price'));
var calCombinedPrice = ($(this).data('combined-price'));
totalPrice += parseInt($(this).data('combined-price'));
discountPrice += calSoloPrice - calCombinedPrice;
});
$('.tp-pack-check:checked').each(function() {
var tpSoloPrice = ($(this).data('solo-price'));
var tpCombinedPrice = ($(this).data('combined-price'));
totalPrice += parseInt($(this).data('combined-price'));
discountPrice += tpSoloPrice - tpCombinedPrice;
});
$('#package-review-savings').html("<div class='discountMed'>You will be saving $" + discountPrice + " per order by bundling your product package.</div>");
}
else {
if (package1.is(':checked')) {
$('.calendar-check:checked').each(function() {
totalPrice += parseInt($(this).data('solo-price'));
});
}
if (package2.is(':checked')) {
$('.tp-pack-check:checked').each(function() {
totalPrice += parseInt($(this).data('solo-price'));
});
}
}
$('#package-review-total').html("$" + totalPrice);
return totalPrice;
};
$('body').on('change', function() {
var totalPrice = calcTotalPrice();
console.log("Total Price" + totalPrice);
});
函数应返回的值,它计算,那么你可以当你调用该函数将其分配给一个变量。 – Barmar
@Barmar嗯,如果我这样做'var packagePrice = calcTotalPrice(); console.log(“总价 - ”+ packagePrice);'它打印为UND。 – Paul
评论[如何在JavaScript中返回值](http://stackoverflow.com/q/5887386/215552)和/或阅读[返回'关键字的文档](https://developer.mozilla.org/ EN-US /文档/网络/的JavaScript /参考/语句/返回)。 –