Есть скрипт (ниже), который должен по задумке на состояние 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]));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно сделать так, чтобы при переходе на страницу сначала в течение 10 - 15 секунд вопроизводилась гиф анимация, а затем на её месте появилось...
При переносе сайта с одного хостинга на другой перестала работать функция транслита, на старом работает, на новом нетПомогите пожалуйста...
Встретился с аномальным поведением NodeJS и MySQLВопрос очень специфический, буду рад любым догадкам