Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.11.2017, 18:37
Интересующийся
Отправить личное сообщение для Леонид777 Посмотреть профиль Найти все сообщения от Леонид777
 
Регистрация: 30.09.2017
Сообщений: 27

Если 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.
У каждой комбинации свой результ.
Ответить с цитированием
  #12 (permalink)  
Старый 20.11.2017, 19:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Леонид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 во втором списке
}
Ответить с цитированием
  #13 (permalink)  
Старый 20.11.2017, 19:35
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Осталось только "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?
Ответить с цитированием
  #14 (permalink)  
Старый 20.11.2017, 20:07
Интересующийся
Отправить личное сообщение для Леонид777 Посмотреть профиль Найти все сообщения от Леонид777
 
Регистрация: 30.09.2017
Сообщений: 27

Как привести скрипт примерно к такой конструкции:

var coll = {
'1000 руб' = ['100,1+0'];
'2000 руб' = ['200,1+0'];
'3000 руб' = ['100,2+0'];


};

И как вывести var coll в результ?
Ответить с цитированием
  #15 (permalink)  
Старый 20.11.2017, 20:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Леонид777,
текст опций списка, это для удобного восприятия человеком, а их из значения, это для удобного употребления программной средой. У вас опции имеют значения от 1 до ..., и это будет удобно для языка. Зачем же описывать наборы не значениями опций, а их текстами?

И ответ вы хотите получать как 20, 40, ..., а описываете опять таки текст 100, 1+0, ... Зачем?
Ответить с цитированием
  #16 (permalink)  
Старый 20.11.2017, 20:21
Интересующийся
Отправить личное сообщение для Леонид777 Посмотреть профиль Найти все сообщения от Леонид777
 
Регистрация: 30.09.2017
Сообщений: 27

Это для наглядности. В скрипте, конечно, лучше значениями.


Тогда так:
var coll = {
'1000 руб' = ['1','1'];
'2000 руб' = ['2','1'];
'3000 руб' = ['3','1'];


};

И как вывести var coll в результ?
Ответить с цитированием
  #17 (permalink)  
Старый 20.11.2017, 20:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Леонид777
Это для наглядности.
Второй пример "наглядности" еще более ужасен, чем первый.

Пусть при выборе в двух списках:
если во втором выбрано 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, но не проблема и без нее.

Последний раз редактировалось laimas, 20.11.2017 в 20:58.
Ответить с цитированием
  #18 (permalink)  
Старый 20.11.2017, 21:03
Интересующийся
Отправить личное сообщение для Леонид777 Посмотреть профиль Найти все сообщения от Леонид777
 
Регистрация: 30.09.2017
Сообщений: 27

А если без JQuery?
Как лучше?
Ответить с цитированием
  #19 (permalink)  
Старый 20.11.2017, 21:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Леонид777
Как лучше?
Если ваш сайт использует jQuery, то и пишите на нем. Если нет и это вся задача, то проще и без него обойтись.
Ответить с цитированием
  #20 (permalink)  
Старый 20.11.2017, 21:19
Интересующийся
Отправить личное сообщение для Леонид777 Посмотреть профиль Найти все сообщения от Леонид777
 
Регистрация: 30.09.2017
Сообщений: 27

Примерно данную конструкцию я и хотел:


var coll = {

'1': {'1': 20, '2': 40, '3': 80},

'2': {'1': 50, '2': 60, '3': 90}

},

Только вопрос вывода по нажатию на кнопку... Как лучше сделать?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить остановку в скрипт для фотошопа aarisham Общие вопросы Javascript 2 21.03.2016 13:18
Требуется помощ написать скрипт для ВК Jove Работа 1 03.11.2015 00:04
скрипт для браузерки ванка Общие вопросы Javascript 11 11.10.2013 12:20
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Скрипт для вывода текста поверх картинки sergeus Работа 1 19.02.2012 06:01