Если tirazh-tampo1 = 100, nanesenie-tampo1 = 1+0, то результ = 20
Если tirazh-tampo1 = 200, nanesenie-tampo1 = 2+0, то результ = 30 Если tirazh-tampo1 = 100, nanesenie-tampo1 = 2+0, то результ = 40. Всего 34 вариации селектов: 1-ый селект - 17 значений, второй - 2 значения. 17*2 = 34. У каждой комбинации свой результ. |
Леонид777,
мы знаем, что килограмм гвоздей стоит 100 руб., поэтому несложно узнать сумму за N килограмм = 100 * N. Также знаем, что есть коэффициент за размер гвоздей: 50 мм - 1, 80 мм - 1.2, 100 - 1.3, .... Умножив сумму за N на коэффициент получим результат. Это расчет. У вас нет никакого расчета, есть что-то фиксированное, о котором известно только вам, ибо 100 + 1 никак не может быть 20, как и другое. Значит опишите эти комбинации объектом и выбирайте их по значениям выбранных списков: var coll = { '1' : {'1': 20, '2': X, ...}, //при выборе 1 во втором списке '2' : {'1': 40, '2': X, ...} //при выборе 2 во втором списке } |
Осталось только "c" заполнить (если это вообще будет работать)
<div class="calculator-tampo1"><br/><a class="calc-tampo1-block">Расчет стоимости тампо печати по стандартным поверхностям (зажигалки, ручки, флешки, брелоки из пластика)</a><br/><br/><br/><select class="tirazh-tampo1" id="tirazh-tampo1"><option selected></option><option value="1">100шт</option><option value="2">200шт</option><option value="3">300шт</option><option value="4">400шт</option><option value="5">500шт</option><option value="6">600шт</option><option value="7">700шт</option><option value="8">800шт</option><option value="9">900шт</option><option value="10">1000шт</option><option value="11">1500шт</option><option value="12">2000шт</option><option value="8">2500шт</option><option value="9">3000шт</option><option value="10">3500шт</option><option value="11">4000шт</option><option value="12">5000шт</option></select>-Тираж;<br/><br/><select class="nanesenie-tampo1" id="nanesenie-tampo1"><option selected></option><option value="1">1+0</option><option value="2">2+0</option></select>-Количество цветов нанесения;<br/><br/><button type="button"onclick="calc();">Рассчитать!</button><br/><br/><div class="paket-result" style="font-weight:bold" id="result"></div></div> <script> var a = document.getElementById("tirazh-tampo1"), b = document.getElementById("nanesenie-tampo1"), c={ '1_1':10, '1_2':30, '2_2':40, }; [a,b].forEach(function(item){ item.onchange=calc; }); function calc(){ document.getElementById("result").innerHTML = c[a.value+'_'+b.value]||0; }; </script> Вопрос по оформлению кода: зачем после каждой строки оставлять минимум 1 пустую строку? Так читается лучше? Почему не 6? |
Как привести скрипт примерно к такой конструкции:
var coll = { '1000 руб' = ['100,1+0']; '2000 руб' = ['200,1+0']; '3000 руб' = ['100,2+0']; }; И как вывести var coll в результ? |
Леонид777,
текст опций списка, это для удобного восприятия человеком, а их из значения, это для удобного употребления программной средой. У вас опции имеют значения от 1 до ..., и это будет удобно для языка. Зачем же описывать наборы не значениями опций, а их текстами? И ответ вы хотите получать как 20, 40, ..., а описываете опять таки текст 100, 1+0, ... Зачем? |
Это для наглядности. В скрипте, конечно, лучше значениями.
Тогда так: var coll = { '1000 руб' = ['1','1']; '2000 руб' = ['2','1']; '3000 руб' = ['3','1']; }; И как вывести var coll в результ? |
Цитата:
Пусть при выборе в двух списках: если во втором выбрано D, то при выборе в первом должно быть: для A - 20 для B - 40 для С - 80 а если во втором выбрано E, тогда для A - 50 для B - 60 для С - 90 Эти значения и описывает объект, свойствами которого являются значения опций списков, по которым они и получаются: <html> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $(function() { var coll = { '1': {'1': 20, '2': 40, '3': 80}, '2': {'1': 50, '2': 60, '3': 90} }, slc = $('select').change(function() { $('#out').text(coll[slc.last().val()][slc.first().val()]) }); }); </script> </head> <body> <select> <option value="1">A</option> <option value="2">B</option> <option value="3">C</option> </select> <select> <option value="1">D</option> <option value="2">E</option> </select> <div id="out">20</div> </body> </html> При этом по умолчанию первый и второй список имеет выбранные значения (первые опции), а значит результат этого выбора уже должен отображаться. Иначе нужно предлагать выбор. Это на jQuery, но не проблема и без нее. |
А если без JQuery?
Как лучше? |
Цитата:
|
Примерно данную конструкцию я и хотел:
var coll = { '1': {'1': 20, '2': 40, '3': 80}, '2': {'1': 50, '2': 60, '3': 90} }, Только вопрос вывода по нажатию на кнопку... Как лучше сделать? |
Часовой пояс GMT +3, время: 18:36. |