Как правильно перебрать условия из разных таблиц?
Всем привет!
Исходные данные. Есть несколько таблиц. Таблица 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); } |
Цитата:
|
Цитата:
var arr=[ [ 3500, 11000, 90000, ], 7000, 22000, 120000 ] ]; var sp=arr[size-1, b-1]; И т.д. и т.п... ;) |
var arr=[ [ 3500, 11000, 90000, ], 7000, 22000, 120000 ] ]; var sp=arr[size-1, b-1]; arr[size-1, b-1] - что такое? Какое значение получается? 3500 должно быть... |
Я понимаю, что мне можно сделать массив из трех массивов.
например // 3 в ширину 3 в высоту // каждый подмассив - колонка var matrix = [ [1,2,3], [4,5,6], [7,8,9] ] alert(matrix[1][1]) // 5 Но как мне задать условие, при котором нужно переменной sp присвоить значение из этого массива. |
the_little,
Цитата:
Цитата:
|
Цитата:
var size принимает значение 1,2,3 var b принимает значение 1,2,3 Всего 9 комбинаций Есть массив var arr=[ [ 3500, 11000, 90000], [ 7000, 22000, 120000], [ 15000, 44000, 360000] ]; Допустим у меня size=3 и b=2 это получается 44000 должно быть. А если size изменится на 1, то это будет 11000 значение из массива нужно подставить в переменную var = sp Перебор какой-то должен быть, или что я не понимаю. Я снова вижу только то, что и раньше делал. Если size=3 и b=2 то var sp = arr[3][2] |
О, а так нельзя написать
var sp = arr[size][b] Получается он будет сам перебирать элементы массива в зависимости от размера и бюджета... ВОзможно это var sp=arr[size-1, b-1]; то же самое, просто я такой вид записи не пойму... Я на сколько понял из массива с массивами вызывается значение парой [][] |
так, кажется дошло.
тут [size-1, b-1] -1 стоит, поскольку у меня значения 1-3, а массив с 0 начинается? только все равно не понятно, почему в одних скобках квадратных... |
the_little,
Насчет квадратных скобок вы абсолютно правы var arr=[ [ 3500, 11000, 90000, ], [ 7000, 22000, 120000 ] ], size = 1, b = 3; var sp=arr[size-1][ b-1]; alert(sp); |
Цитата:
Нужно писать так var sp=arr[size-1][b-1]; Я ведь не только на JS пишу, т.ч. есть небольшие побочные эффекты в синтаксисе. :D |
Часовой пояс GMT +3, время: 00:37. |