Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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_Php_Jquery_Math - Fatal编程技术网

用javascript求解数学函数

用javascript求解数学函数,javascript,php,jquery,math,Javascript,Php,Jquery,Math,我已经为购物篮创建了这个函数。简单地说,我有x个产品,每个产品有(2个复选框+数量输入)。 第一个复选框为产品价格添加+3,第二个复选框为+8。就像(3+8+价格)*数量。在页面的末尾,我得到了总的结果(比如product1+product2…等等) 问题是:如果我发布带有新数量的表单,然后返回页面,我会得到默认结果(总价)(当然,选中复选框+PHP的新数量) 以下是我的功能: $(function(){ var item_prices = 0; var total_item_p

我已经为购物篮创建了这个函数。简单地说,我有x个产品,每个产品有(2个复选框+数量输入)。 第一个复选框为产品价格添加+3,第二个复选框为+8。就像(3+8+价格)*数量。在页面的末尾,我得到了总的结果(比如product1+product2…等等)

问题是:如果我发布带有新数量的表单,然后返回页面,我会得到默认结果(总价)(当然,选中复选框+PHP的新数量)

以下是我的功能:

$(function(){
    var item_prices = 0;
    var total_item_prices = 0;
    var total_unique_item_prices = 0;
    var total_price = 0;

    $.each($('*[data-item-price]'), function(index, element) {
        var item_price = $(element).data("item-price");
        total_unique_item_prices = parseInt($('[data-total]').html()) + item_price;
        total_price = total_unique_item_prices;
        $('[data-total]').html(total_unique_item_prices);
    })

    $.each($('*[data-item-price]'), function(index, element) {

        var item_price = $(element).data("item-price");
        var price_of_options = 0;
        var quantity = parseInt($(element).find('input[data-quantity]').val());

        $.each($(element).children().find("[data-price]"), function(index, element2) {
            $(element2).click(function(){
                var actual_price = parseInt($('[data-total]').html());
                var actual_item_price = parseInt($(element).find('[data-item-total]').html());
                var price = $(element2).data("price");
                if ($(element2).is(':checkbox') && $(element2).is(':checked')) {
                    price_of_options += price;
                    $(element).find('[data-item-total]').html(actual_item_price + (price * quantity));
                    $('[data-total]').html(actual_price + (price * quantity));
                }
                else {
                    price_of_options -= price;
                    $(element).find('[data-item-total]').html(actual_item_price - (price));
                    $('[data-total]').html(actual_price - (price * quantity));
                }
            })
        })

        $(element).find('input[data-quantity]').bind('keyup mouseup', function () {
            var new_quantity = parseInt($(element).find('input[data-quantity]').val());
            var quantity_dif = new_quantity - quantity;
            var actual_price = parseInt($('[data-total]').html());
            if (quantity_dif > 0) {
                quantity_dif = new_quantity - quantity;
                $(element).find('[data-item-total]').html((item_price + price_of_options) * new_quantity);
                $('[data-total]').html(actual_price + ((item_price + price_of_options) * quantity_dif));
            }
            else {
                quantity_dif *= -1;
                quantity = parseInt($(element).find('[data-quantity]').val());
                $(element).find('[data-item-total]').html((item_price + price_of_options) * new_quantity);
                $('[data-total]').html(actual_price - ((item_price + price_of_options) * quantity_dif));
            }
            quantity = parseInt($(element).find('[data-quantity]').val());
         })

    })
})
正如我所说,代码正在工作:只是在重新加载网页时不起作用。


我不是英国人,请宽容一点。我正在尽力澄清

这和“用javascript解决数学函数”有什么关系?我很确定这是关于数学的,因为我们需要解决一些关于加法、减法、乘法的问题。(简单的数学)也许我错了。既然你说你的代码正在工作,除非导航发生(重新加载、返回),我认为浏览器缓存或javascript初始化是罪魁祸首,而不是错误的数学。1。生成html时,不要忘记为要添加的元素设置checked=“checked”;2.显示后运行计算功能(已加载/准备就绪);3.这是一个非常简单的解决方案,但这不是真正的浏览器缓存或Js init问题(我不这么认为),我真的在想一个数学错误。可能是错误的数学,因为我发现了一个问题,当你滥发复选框(检查小提琴)。顺便谢谢你的帮助^-^