Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从函数中获取变量并在事件中运行_Javascript_Jquery_Function_Variables - Fatal编程技术网

Javascript 从函数中获取变量并在事件中运行

Javascript 从函数中获取变量并在事件中运行,javascript,jquery,function,variables,Javascript,Jquery,Function,Variables,我有一个计算价格的函数。变量totalPrice计算所选内容的总数。然后我将totalPrice写入div 我的问题是,我正在正文上运行一个更改事件,我试图在更改事件中运行calcTotalPrice函数,然后尝试访问totalPrice变量,但它给了我变量未定义的错误 如何从函数中获取调整后的totalPrice变量并在事件中运行它 function calcTotalPrice() { var totalPrice = 0; var discountPrice

我有一个计算价格的函数。变量
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);
});
函数calcTotalPrice(){
var totalPrice=0;
var贴现价格=0;
if(package1.is(':checked')&package2.is(':checked')){
$('.calendar check:checked')。每个(函数(){
var calSoloPrice=($(this).data('solo-price');
var calCombinedPrice=($(this).data('combined-price');
totalPrice+=parseInt($(this).data('combined-price');
折扣价格+=calSoloPrice-calCombinedPrice;
});
$('.tp pack check:checked')。每个(函数(){
var tpSoloPrice=($(this).data('solo-price');
var tpCombinedPrice=($(this).data('combined-price');
totalPrice+=parseInt($(this).data('combined-price');
折扣价格+=tpSoloPrice-tpCombinedPrice;
});
$('#package review savings').html(“通过捆绑产品包,您将为每个订单节省$”+折扣价格+”);
}
否则{
if(package1.is(':checked')){
$('.calendar check:checked')。每个(函数(){
totalPrice+=parseInt($(this).data('solo-price');
});
}
if(package2.is(':checked')){
$('.tp pack check:checked')。每个(函数(){
totalPrice+=parseInt($(this).data('solo-price');
});
}
}
$(“#包装审查总计”).html(“$”+总价);
};
$('body')。在('change',函数(){
calcTotalPrice();
console.log(“总价”+总价);
});

您已经在函数中定义了变量。那么它只存在于该范围内

如果从定义中删除
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);
});
函数calcTotalPrice(){
var totalPrice=0;
var贴现价格=0;
if(package1.is(':checked')&package2.is(':checked')){
$('.calendar check:checked')。每个(函数(){
var calSoloPrice=($(this).data('solo-price');
var calCombinedPrice=($(this).data('combined-price');
totalPrice+=parseInt($(this).data('combined-price');
折扣价格+=calSoloPrice-calCombinedPrice;
});
$('.tp pack check:checked')。每个(函数(){
var tpSoloPrice=($(this).data('solo-price');
var tpCombinedPrice=($(this).data('combined-price');
totalPrice+=parseInt($(this).data('combined-price');
折扣价格+=tpSoloPrice-tpCombinedPrice;
});
$('#package review savings').html(“通过捆绑产品包,您将为每个订单节省$”+折扣价格+”);
}
否则{
if(package1.is(':checked')){
$('.calendar check:checked')。每个(函数(){
totalPrice+=parseInt($(this).data('solo-price');
});
}
if(package2.is(':checked')){
$('.tp pack check:checked')。每个(函数(){
totalPrice+=parseInt($(this).data('solo-price');
});
}
}
$(“#包装审查总计”).html(“$”+总价);
返回总价;
};
$('body')。在('change',函数(){
var totalPrice=calcTotalPrice();
console.log(“总价”+总价);
});

该函数应返回其计算的值,然后您可以在调用该函数时将其分配给一个变量。@如果我这样做,
var packagePrice=calcTotalPrice();console.log(“总价-”+包装价格)
它打印为UND.Review和/或read。@就像我说的,函数应该返回值<代码>返回总价明白了!我从未听说过
return
将该变量推送到函数中。谢谢你的帮助!