Вернуть переменные из функции и сложить их
Доброго, друзья.
Сделал я такого монстра: 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); И все работает, не смотря ни на что :D Не могу только понять, каким образом вытащить данные о цене товара после всех калькуляций. Внутри функции это переменная Код:
itemTotal Фиддл для наглядности https://jsfiddle.net/r5pu6csk/3/ Пардон, не нашел тут спойлера. |
movingToJS,
var total = [], z = 0; function tot(itemTotal, index) { total[index] = itemTotal; var sum = total.reduce(function(a, b) { return a + b }, 0); $(".allTotal span").html(sum) } function productCalc(a, b, c, d, e, f, g, h, i, j, k, l, m, n, z) { $("#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" } tot(itemTotal, z); 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() } var itemSelector = "#item", qtySelector = $('input[name="itemQty"]'), cartItemSelector = "cartItem", itemTitle = $("input[name='itemAdd']").val(), itemHumidity = $(itemSelector + " input[name='itemHumidity']").val(), price1 = 8500, price2 = 765, price3 = 8300, price4 = 747, price5 = 10500, price6 = 945, price7 = 1E4, price8 = 900, pcsInMeter = .09; productCalc(itemSelector, price1, price2, qtySelector, price3, price4, cartItemSelector, price5, price6, price6, price8, pcsInMeter, itemTitle, itemHumidity, z++); var itemSelector = "#item2", qtySelector = $('input[name="item2Qty"]'), cartItemSelector = "cartItem2", itemTitle = $("input[name='item2Add']").val(), itemHumidity = $(itemSelector + " input[name='item2Humidity']").val(), price1 = 8500, price2 = 1148, price3 = 8300, price4 = 1121, price5 = 10500, price6 = 1418, price7 = 1E4, price8 = 1350, pcsInMeter = .135; productCalc(itemSelector, price1, price2, qtySelector, price3, price4, cartItemSelector, price5, price6, price6, price8, pcsInMeter, itemTitle, itemHumidity, z++); |
Цитата:
[HTML run hide]код страницы целиком[/HTML] Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Спасибо, то, что нужно.
|
Цитата:
|
Там есть вещи пострашнее, как то:
$(a + " .price input[type='hidden']").val(0); ... $(this).siblings('[type="hidden"]').val(0); Буквально одно и то же :D . Как раз этим и занимаюсь. |
Часовой пояс GMT +3, время: 04:22. |