Есть скрипт (ниже), который должен по задумке на состояние checkbox - checked записывать value этого checkbox(их много) в массив, делать тоже самое с другим checkbox (и т.д) и выдавать на странице сумму этих значений. С этим он благо справляется. Так же с получившейся суммой необходимо провести несколько операций - отнять 20% если длинна массива 2, 30% если 3, 40 если 4 и более.
Я попытался это реализовать с помощью ещё одной функции, которая так же обращается к этому массиву. Проблема в том, что он отнимает не 20%, а больше (я пересчитывал в ручную, да и взглянув понять не сложно). Буду очень рад вашей помощи и совету.
/*Получаем значение по признаку checked */
var boxes = $("input:checkbox");
$("input:checkbox").on("change", function(){
var theArray = new Array();
for (var i=0;i<boxes.length;i++) {
var box = boxes[i];
if ($(box).prop('checked')) {
theArray[theArray.length] = $(box).val();
}
}
showValues(theArray);
showDiscount(theArray);
});
/* Сумма значений из массива*/
var showValues = function(array) {
var text = "";
if(!array.length) {
text += "Ни одна система не выбрана";
}
for(var i = 0; i < array.length; i++) {
if (!text) {
text = +array[i];
}
else text += +array[i];
}
$(".cost").html(text);
}
/* Сумма - %*/
var showDiscount = function(array) {
var disc = "";
var sumDisc = +array[i];
if (!array.length) {
disc += "Ни одна система не выбрана";
}
for (var i=1; i < array.length; i++) {
if (!disc) {
disc = +array[i];
}
else {
disc += sumDisc * 0.8;
}
}
$(".discount").html(disc);
}
function calcSumWithDiscount(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
sum = sum + (+arr[i]);
}
var disc = 0;
if (arr.length == 2)
disc = 0.2;
else if (arr.length == 3)
disc = 0.3;
else if (arr.length >= 4)
disc = 0.4;
sum = sum * (1 - disc);
return sum;
}
console.log(calcSumWithDiscount([10]));
console.log(calcSumWithDiscount([10,10]));
console.log(calcSumWithDiscount([10,10,10]));
console.log(calcSumWithDiscount([10,10,10,10,10]));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости