Показать сообщение отдельно
  #1 (permalink)  
Старый 21.05.2017, 22:03
Новичок на форуме
Отправить личное сообщение для movingToJS Посмотреть профиль Найти все сообщения от movingToJS
 
Регистрация: 21.05.2017
Сообщений: 3

Вернуть переменные из функции и сложить их
Доброго, друзья.

Сделал я такого монстра:
function productCalc(a, b, c, d, e, f, g, h, i, j, k, l, m, n) {
    $("#lumbersCartForm input").on("ifChanged change", function(event) {
        if ($(a + " .Wet").is(':checked')) {
            if ($(a + " .Retail").is(':checked')) {
                if ($(a + " .IsMeter").is(':checked')) {
                    var itemPrice = b;
                } else if ($(a + " .IsPcs").is(':checked')) {
                    itemPrice = c;
                }

                var itemTotal = itemPrice * d.val();

                $(a + " .price span").text(itemTotal);
                $(a + " .price input[type='hidden']").val(itemTotal);

            } else if ($(a + " .Wholesale").is(':checked')) {
                if ($(a + " .IsMeter").is(':checked')) {
                    itemPrice = e;
                } else if ($(a + " .IsPcs").is(':checked')) {
                    itemPrice = f;
                }

                itemTotal = itemPrice * d.val();

                $(a + " .price span").text(itemTotal);
                $(a + " .price input[type='hidden']").val(itemTotal);
            };

            $("#cart tbody ." + g + " .humidity").html('Option 1 - Value 1');
        };

        if ($(a + " .Dry").is(':checked')) {
            if ($(a + " .Retail").is(':checked')) {
                if ($(a + " .IsMeter").is(':checked')) {
                    itemPrice = h;
                } else if ($(a + " .IsPcs").is(':checked')) {
                    itemPrice = i;
                };

                itemTotal = itemPrice * d.val();

                $(a + " .price span").text(itemTotal);
                $(a + " .price input[type='hidden']").val(itemTotal);

            } else if ($(a + " .Wholesale").is(':checked')) {
                if ($(a + " .IsMeter").is(':checked')) {
                    itemPrice = j;
                } else if ($(a + " .IsPcs").is(':checked')) {
                    itemPrice = k;
                }

                itemTotal = itemPrice * d.val();

                $(a + " .price span").text(itemTotal);
                $(a + " .price input[type='hidden']").val(itemTotal);
            };

            $("#cart tbody ." + g + " .humidity").html('Option 1 - Value 2');
        };

        if ($(a + " .IsMeter").is(':checked')) {
            var itemQtyType = "Option 3 - Value 1",
                itemVolTotal = parseFloat(d.val(), 10);
        } else {
            itemVolTotal = parseFloat((l * d.val()).toFixed(2), 10);
            itemQtyType = "Option 3 - Value 2";
        };

        if (!$(a + " .Add").is(":checked")) {
            itemTotal = 0;
            itemVolTotal = 0;
        };

        if ($(a + ' .Add').is(':checked')) {
            if (!$("#cart tbody ." + g).length) {
                $("#cart tbody #profiledBeams").after(' <tr class="' + g + '">\
																<td>' + m + '</td>\
																<td class="humidity">' + n + '</td>\
																<td class="qty">' + d.val() + itemQtyType + '</td>\
																<td class="price">' + $(a + " .price input[type='hidden']").val() + '</td>\
															</tr> ');
            };

        } else {
            $('.' + g).remove();
            $(a + " .price input[type='hidden']").val(0);
        };

        $("#cart tbody ." + g + " .qty").html(d.val() + itemQtyType);
        $("#cart tbody ." + g + " .price").html($(a + " .price input[type='hidden']").val());
    });

    function addToCart() {
        $(a + " .btnAdd").on('click', function() {
            if ($(this).hasClass('added')) {
                $(a + " .Add").prop("checked", false).change();
                $(this).toggleClass('added btn-danger').text('Add to cart');
                $(this).parent().siblings('.price').find('input').val(0);
            } else {
                $(a + " .Add").prop("checked", true).change();
                $(this).toggleClass('added btn-danger').text('Remove');
            };
        });
    };

    addToCart();
};


Передаю в нее товары:
// Product 1
var itemSelector = '#item', // a
    qtySelector = $('input[name="itemQty"]'), // d
    cartItemSelector = 'cartItem', // g
    itemTitle = $("input[name='itemAdd']").val(), // m
    itemHumidity = $(itemSelector + " input[name='itemHumidity']").val(), // n

    price1 = 8500, // b
    price2 = 765, // c
    price3 = 8300, // e
    price4 = 747, // f
    price5 = 10500, // h
    price6 = 945, // i
    price7 = 10000, // j
    price8 = 900, // k

    pcsInMeter = 0.09; // l

productCalc(itemSelector, price1, price2, qtySelector, price3, price4, cartItemSelector, price5, price6, price6, price8, pcsInMeter, itemTitle, itemHumidity);

// Product 2
var itemSelector = '#item2', // a
    qtySelector = $('input[name="item2Qty"]'), // d
    cartItemSelector = 'cartItem2', // g
    itemTitle = $("input[name='item2Add']").val(), // m
    itemHumidity = $(itemSelector + " input[name='item2Humidity']").val(), // n

    price1 = 8500, // b
    price2 = 1148, // c
    price3 = 8300, // e
    price4 = 1121, // f
    price5 = 10500, // h
    price6 = 1418, // i
    price7 = 10000, // j
    price8 = 1350, // k

    pcsInMeter = 0.135; // l

productCalc(itemSelector, price1, price2, qtySelector, price3, price4, cartItemSelector, price5, price6, price6, price8, pcsInMeter, itemTitle, itemHumidity);


И все работает, не смотря ни на что
Не могу только понять, каким образом вытащить данные о цене товара после всех калькуляций. Внутри функции это переменная
Код:
itemTotal
, а как ее поймать извне? И вопрос номер 2: как это реализовать, чтобы посчитать сумму добавленных в корзину товаров?
Фиддл для наглядности https://jsfiddle.net/r5pu6csk/3/

Пардон, не нашел тут спойлера.

Последний раз редактировалось movingToJS, 21.05.2017 в 23:02.
Ответить с цитированием