Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.08.2017, 04:45
Новичок на форуме
Отправить личное сообщение для romanmysin Посмотреть профиль Найти все сообщения от romanmysin
 
Регистрация: 18.08.2017
Сообщений: 4

Два условия в расчете в калькуляторе
Добрый день.
Прошу помощи с калькулятором на сайте.

Сейчас работает по принципу:
Если стоит галочка,
то сумма1+15%,
иначе сумма2+15%

Необходимо добавить еще одно условие, при котором, если 15% меньше 2500, то прибавляем не 15%, а 2500.

То есть должно получиться:
Если стоит галочка,
то Если сумма1+15% < сумма1+2500,
то сумма1+2500,
иначе Если сумма2+15% < сумма2+2500,
то сумма2+2500


if ( $('#id_16 input').prop('checked') )  result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))*0.15; else  result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))*0.15

Последний раз редактировалось romanmysin, 19.08.2017 в 11:43.
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2017, 07:56
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

romanmysin, а в чем у вас сложность возникла?
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2017, 20:42
Новичок на форуме
Отправить личное сообщение для romanmysin Посмотреть профиль Найти все сообщения от romanmysin
 
Регистрация: 18.08.2017
Сообщений: 4

скорее всего не так где-то в деталях кода - калькулятор изначально делал в конфигураторе, потом вносил в него изменения, но второе условие сейчас не получается добавить.

посмотрите, пжлста, вот такой получился последний вариант с двумя условиями.
скорее какие-то скобки или ; или знак < не так я ставлю ...

if ( $('#id_16 input').prop('checked') )  result_proc =if ((parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))*0,15<2500) result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))+2500; else  (parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))*0,15; else if ((parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))*0,15<2500) result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))+2500; else (parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))*0,15

Последний раз редактировалось romanmysin, 23.02.2019 в 18:37.
Ответить с цитированием
  #4 (permalink)  
Старый 18.08.2017, 23:30
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

romanmysin, может так?
var summ=0,//сумма
	data={//айдишники полей
		options:[1,8,7],//опции
		radio:[9,10]//радио
		input:[]//инпуты
	},
	selectors={
		options:'#id_%id% option:selected',
		radio:'input[type="radio"][name=radio_%id%]:checked',
		input:'#id_%id% input'
	};
	percent=15,//надбавка в процентах
	min_percent_value=2500;//минимальная надбавка

if($('#id_16 input').prop('checked'))
	data.input.push(16);

for(var i in data){
	if(!data.hasOwnProperty(i)) 
		continue;
	
	for(var j=0;j<data[i].length;j++){
		summ+=parseFloat($(selectors[i].replace('%id%',data[i][j])).val());
	};
};
var plus=summ*(percent/100);//Получаю значение надбавки
plus=plus>=min_percent_value?plus:min_percent_value;//Если надбавка меньше минимальной надбавки, то надбавка равна минимальной...

result_proc=summ+plus;


Upd. Псевдо класс «radio» разве существует?

Последний раз редактировалось Nexus, 18.08.2017 в 23:35.
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2017, 01:42
Новичок на форуме
Отправить личное сообщение для romanmysin Посмотреть профиль Найти все сообщения от romanmysin
 
Регистрация: 18.08.2017
Сообщений: 4

спасибо за ответ, но не сработало.
решил модернизацией своего кода с помощью того же конструктора.

Если ( галочка ) То

Если ( № 1 × 0.15 < 2500 ) То
Результат = № 1 + 2500
Иначе
Результат = № 1 + № 1 × 0.15

Иначе Если ( № 2 × 0.15 < 2500 ) То
Результат = № 2 + 2500
Иначе
Результат = № 2 + № 2 × 0.15

if ( $('#id_3 input').prop('checked') )  if ( parseFloat($('#id_1 option:selected').val())*0.15<2500 )  result_proc =parseFloat($('#id_1 option:selected').val())+2500; else  result_proc =parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_1 option:selected').val())*0.15; else  if ( parseFloat($('#id_2 option:selected').val())*0.15<2500 )  result_proc =parseFloat($('#id_2 option:selected').val())+2500; else  result_proc =parseFloat($('#id_2 option:selected').val())+parseFloat($('#id_2 option:selected').val())*0.15

Последний раз редактировалось romanmysin, 19.08.2017 в 11:42.
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2017, 09:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

romanmysin, в вашем "итоговом коде" используются совершенно другие поля.
Ну да ладно, работает как нужно и фиг с ним.
Ответить с цитированием
  #7 (permalink)  
Старый 19.08.2017, 10:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

romanmysin,
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #8 (permalink)  
Старый 19.08.2017, 11:41
Новичок на форуме
Отправить личное сообщение для romanmysin Посмотреть профиль Найти все сообщения от romanmysin
 
Регистрация: 18.08.2017
Сообщений: 4

да, переменных меньше, т.к. воспроизводить заново полностью с бОльшим числом переменных было тяжело и объединил суммы в одну. Нужно было для примера - как и куда вставляются условия.
спасибо Nexus и Рони.
Ответить с цитированием
  #9 (permalink)  
Старый 19.08.2017, 11:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от рони
О том, как вставить в сообщение
Лучше не стало.
Ответить с цитированием
  #10 (permalink)  
Старый 19.08.2017, 11:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

laimas,
тут даже http://jsbeautifier.org/ бессилен!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условия в функции или разделитель? tai Общие вопросы Javascript 2 13.02.2014 16:16
Два блока div разъезжаются при скроллинге окна браузера. call007 jQuery 0 03.04.2011 16:21
Два условия в for HelpeR Общие вопросы Javascript 3 08.10.2010 16:41
Jquery Два условия hangover Общие вопросы Javascript 0 14.12.2009 20:32
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03