Всем привет!
Исходные данные. Есть несколько таблиц.
Таблица 1. Стоимость пленки.
--------------дешево средний дорогой
маленький
средний
большой
Таблица 2. Ламповый проектор.
---------------ТИП 1 ТИП 2 ТИП3
маленький
средний
большой
Таблица 3. Лазерный проектор.
---------------ТИП 1 ТИП 2 ТИП3
маленький
средний
большой
Таблица 4. Работы
---------------ТИП 1 ТИП 2 ТИП3
маленький
средний
большой
Далее в HTML:
РАДИОБАТТОН с бюджетом
СЕЛЕКТ с размером
После выбора значения в СЕЛЕКТе с размером открывается
СЕЛЕКТ выбора лампового проектора
После выбора значения в СЕЛЕКТе с типом лампового проектора открывается
РАДИОБАТТОН использовать лазерный проектор ДА НЕТ
Если НЕТ - то ничего не происходит
Если ДА - то из Таблицы 3 берется соответсвующее значение.
Ну и там дальше еще аналогичные таблицы, значения которых зависят от размера и типа проектора.
Как сейчас это делаю я. Перебираю IF все возможные варианты при каждом новом СЕЛЕКТе. Это выглядит очень громоздко, и чувствую что есть способ более правильный... Я пытался задать при втором переборе (РАЗМЕР + ТИП ПРОЕКТОРА) переменную EX, которая потом сокращала запись, но не считает...
Я уже думал может можно какими-то массивами сделать, но не понимаю как потом что с ними делать...
function check() {
// Определяем выбранный бюджет
var inp = document.getElementsByName('budjet');
for (var i = 0; i < inp.length; i++) {
if (inp[i].type == "radio" && inp[i].checked) {
var b = inp[i].value;
}
}
// Определяем выбранный размер
var selsize = document.getElementById("size"); // Получаем наш список
var size = selsize.options[selsize.selectedIndex].value;
// Определяем выбранный тип проектора
var selprojsm = document.getElementById("proj_sm"); // Получаем наш список
var psmt = selprojsm.options[selprojsm.selectedIndex].value;
var selprojmid = document.getElementById("proj_mid"); // Получаем наш список
var pmidt = selprojmid.options[selprojmid.selectedIndex].value;
var selprojlg = document.getElementById("proj_lg"); // Получаем наш список
var plgt = selprojlg.options[selprojlg.selectedIndex].value;
if ( size == 1 && b == 1 ) {
var sp = 3500; // Бюджет = ДЕШЕВО, Размер 1500х1000 мм
}
if ( size == 1 && b == 2 ) {
var sp = 11000; // Бюджет = СРЕДНИЙ, Размер 1500х1000 мм
}
if ( size == 1 && b == 3 ) {
var sp = 90000; // Бюджет = ПРЕМИУМ, Размер 1500х1000 мм
}
if ( size == 2 && b == 1 ) {
var sp = 7000; // Бюджет = ДЕШЕВО, Размер 2000х1500 мм
}
if ( size == 2 && b == 2 ) {
var sp = 22000; // Бюджет = СРЕДНИЙ, Размер 2000х1500 мм
}
if ( size == 2 && b == 3 ) {
var sp = 120000; // Бюджет = ПРЕМИУМ, Размер 2000х1500 мм
}
if ( size == 3 && b == 1 ) {
var sp = 15000; // Бюджет = ДЕШЕВО, Размер 3000х2200 мм
}
if ( size == 3 && b == 2 ) {
var sp = 44000; // Бюджет = СРЕДНИЙ, Размер 3000х2200 мм
}
if ( size == 3 && b == 3 ) {
var sp = 360000; // Бюджет = ПРЕМИУМ, Размер 3000х2200 мм
}
// Определяем стоимость проектора
if ( size == 1 && psmt == 1 ) {
var pp = 35000; // Размер 1500х1000 мм, Ночь
var ex = 44;
}
if ( size == 1 && psmt == 2 ) {
var pp = 80000; // Размер 1500х1000 мм, Пасмурный
var ex = 54;
}
if ( size == 1 && psmt == 3 ) {
var pp = 130000; // Размер 1500х1000 мм, День
var ex = 64;
}
if ( size == 2 && pmidt == 1 ) {
var pp = 80000; // Размер 2000х1500 мм, Ночь
var ex = 45;
}
if ( size == 2 && pmidt == 2 ) {
var pp = 160000; // Размер 2000х1500 мм, Пасмурный
var ex = 55;
}
if ( size == 2 && pmidt == 3 ) {
var pp = 250000; // Размер 2000х1500 мм, День
var ex = 65;
}
if ( size == 3 && plgt == 1 ) {
var pp = 130000; // Размер 3000х2200 мм, Ночь
var ex = 46;
}
if ( size == 3 && plgt == 2 ) {
var pp = 250000; // Размер 3000х2200 мм, Пасмурный
var ex = 56;
}
if ( size == 3 && plgt == 3 ) {
var pp = 370000; // Размер 3000х2200 мм, День
var ex = 66;
}
// Скрываем и показываем выбор проектора в соответсвии с выбранным размером витрины
var el = document.getElementById("projector");
var psm = document.getElementById("proj_small");
var pmid = document.getElementById("proj_middle");
var plg = document.getElementById("proj_large");
var plaz = document.getElementById("lazer-krep");
if ( size == 1) {
el.classList.remove("hidden");
el.classList.add("visible");
psm.classList.remove("hidden");
psm.classList.add("visible");
pmid.classList.add("hidden");
pmid.classList.remove("visible");
plg.classList.add("hidden");
plg.classList.remove("visible");
}
if ( size == 2) {
el.classList.remove("hidden");
el.classList.add("visible");
psm.classList.remove("visible");
psm.classList.add("hidden");
pmid.classList.add("visible");
pmid.classList.remove("hidden");
plg.classList.add("hidden");
plg.classList.remove("visible");
}
if ( size == 3) {
el.classList.remove("hidden");
el.classList.add("visible");
psm.classList.remove("visible");
psm.classList.add("hidden");
pmid.classList.add("hidden");
pmid.classList.remove("visible");
plg.classList.add("visible");
plg.classList.remove("hidden");
}
if ( size != 1 && size != 2 && size != 3) {
plaz.classList.remove("visible");
plaz.classList.add("hidden");
el.classList.remove("visible");
el.classList.add("hidden");
psm.classList.remove("visible");
psm.classList.add("hidden");
pmid.classList.add("hidden");
pmid.classList.remove("visible");
plg.classList.add("hidden");
plg.classList.remove("visible");
sp = 0;
pp = 0;
}
if (psmt == 1 && size == 1 || psmt == 2 && size == 1 || psmt == 3 && size == 1 || pmidt == 1 && size == 2 || pmidt == 2 && size == 2 || pmidt == 3 && size == 2 || plgt == 1 && size == 3 || plgt == 2 && size == 3 || plgt == 3 && size == 3) {
plaz.classList.add("visible");
plaz.classList.remove("hidden");
}
if ( psmt == 0 && pmidt == 0 && plgt == 0 ) {
plaz.classList.add("hidden");
plaz.classList.remove("visible");
sp = 0;
pp = 0;
}
// Определяем выбран ли лазерный проектор
var laz = document.getElementsByName('lazer');
for (var i = 0; i < laz.length; i++) {
if (laz[i].type == "radio" && laz[i].checked) {
var l = laz[i].value;
}
}
// Определяем выбранный размер
// var sellaz = document.getElementById("lazertype"); // Получаем наш список
// var lazt = sellaz.options[sellaz.selectedIndex].value;
if ( l == 1 ) {
if ( ex == 44 || ex == 45 ) {
pp = 200000;
}
if ( ex == 46 ) {
pp = 400000;
}
if ( ex == 54 || ex == 55 ) {
pp = 400000;
}
if ( ex == 56 ) {
pp = 800000;
}
if ( ex == 64 ) {
pp = 800000;
}
if ( ex == 65 ) {
pp = 1300000;
}
if ( ex == 66 ) {
pp = 1600000;
}
} else {
pp = 0;
}
var summ = sp + pp;
document.getElementById("price_oborud").innerHTML = summ;
alert(pp);
}