Расчёт % в калькуляторе в зависимости от значения переменной
Всем доброго дня! Прошу помочь в реализации калькулятора. Задача следующая: Есть две переменных ("bumaga" - материал; "tiraj" - кол-во материала), первая умножается на вторую, но в зависимости от кол-ва тиража (материала), применяется скидка. Загвоздка в том, что у каждого материала при одинаковом тираже будет своя скидка (для понимания прикладываю прайс).
Сейчас в переменной "result" корректно считается только материал "Картон, 300 гр, 4+0", как сделать, чтобы в зависимости от выбора материала скидка рассчитывалась по своему алгоритму для каждого материала? Заранее спасибо за подсказку.
<html>
<head>
<title>Калькулятор</title>
<script type="text/javascript">
/*
* Функция подсчета стоимости
*/
function calc() {
//получаем ссылку на элемент Select (Бумага)
var bumaga = document.getElementById("bumaga");
//получаем ссылку на элемент Select (Двухсторонняя ламинация)
var laminat = document.getElementById("laminat");
//получаем ссылку на элемент Select (Тираж)
var kolvo = document.getElementById("kolvo");
//получаем ссылку на элемент span, в него будем писать стоимость тиража
var result = document.getElementById("result");
//передаём в пустую переменную тираж кол-во визиток
var tiraj = 0;
tiraj += parseFloat(kolvo.options[kolvo.selectedIndex].value);
//подсчитываем общую стоимость одной визитки
var price = 0;
price += parseFloat(bumaga.options[bumaga.selectedIndex].value);
price += parseFloat(laminat.options[laminat.selectedIndex].value);
//в зависимости от тиража перемножаем переменные прайс и тираж с учетом скидки и выводим стоимость
result.innerHTML = Math.floor((tiraj >= 1 && tiraj < 289) ? price * tiraj :
(tiraj >= 312 && tiraj < 529) ? price * tiraj / 100 * 76 :
(tiraj >= 552 && tiraj < 1009) ? price * tiraj / 100 * 64 :
(tiraj >= 1032 && tiraj < 2017) ? price * tiraj / 100 * 48 :
'Сбой!');
}
</script>
</head>
<body>
<b><h2>Выберите параметры заказа:</b></h2>
<br>
<b>Материал:</b><br>
<select onchange="calc()" id="bumaga">
<option value="2.5">Картон, 300 гр, 4+0</option>
<option value="3">Картон, 300 гр, 4+4</option>
<option value="2.7">Color Copy, 300 гр, 4+0</option>
<option value="3.2">Color Copy, 300 гр, 4+4</option>
<option value="2.8">Color Copy, 350 гр, 4+0</option>
<option value="3.3">Color Copy, 350 гр, 4+4</option>
<option value="5">Маджестик, 4+0</option>
<option value="6.5">Маджестик, 4+4</option>
<option value="4">Лён, 4+0</option>
<option value="5">Лён, 4+4</option>
</select><br><br>
<b>Двухсторонняя ламинация:</b><br>
<select onchange="calc()" id="laminat">
<option value="0">Нет</option>
<option value="1.2">Глянцевая 32 мк</option>
<option value="1.8">Глянцевая 75 мк</option>
<option value="3.5">Глянцевая 125 мк</option>
<option value="6.4">Глянцевая 250 мк</option>
</select><br><br>
<b>Тираж:</b><br>
<select onchange="calc()" id="kolvo">
<option value="96">96</option>
<option value="120">120</option>
<option value="144">144</option>
<option value="192">192</option>
<option value="240">240</option>
<option value="264">264</option>
<option value="288">288</option>
<option value="408">408</option>
<option value="480">480</option>
<option value="504">504</option>
<option value="600">600</option>
<option value="696">696</option>
<option value="792">792</option>
<option value="888">888</option>
<option value="912">912</option>
<option value="984">984</option>
<option value="1008">1008</option>
<option value="1512">1512</option>
<option value="1608">1608</option>
<option value="1704">1704</option>
<option value="1800">1800</option>
<option value="1896">1896</option>
<option value="1992">1992</option>
<option value="2016">2016</option>
</select><br><br>
<h3><b>Стоимость тиража: <span id="result">____</span> руб.</b></h3>
</body>
</html>
Ответы (1 шт):
Ясно если прайс различный то и считать нужно отдельно покомпонентно, а не так как у вас
var price = 0;
price += parseFloat(bumaga.options[bumaga.selectedIndex].value);
price += parseFloat(laminat.options[laminat.selectedIndex].value);
исправте на
var priceBumaga = 0;
priceBumaga += parseFloat(bumaga.options[bumaga.selectedIndex].value);
var priceLaminat = 0;
priceLaminat += parseFloat(laminat.options[laminat.selectedIndex].value);
и вычисляете каждый отдельно со своей скидкой
priceTotal = priceBumaga * tiraj * tirajBumagaKoef + priceLaminat * tiraj * tirajLaminatKoef
где
tirajBumagaKoef, tirajLaminatKoef - соответствующие коэфиценты материала к тиражу
