Создать ответ 
Прошу помощи по скрипту он-лайн калькулятора
Автор Сообщение
Natali_SPb Не на форуме
Рядовой
*

Сообщений: 9
У нас с: Dec 2013
Сообщение: #1
Прошу помощи по скрипту он-лайн калькулятора
Здравствуйте! Большое спасибо за информацию на сайте, кое-что из представленного уже установила.

Совсем недавно обнаружила этот ресурс в поисках ответа на свой не самый наверное компетентный вопрос... ибо я ни разу не программист. Подсказок не нашла, зато нашла этот форум и очень надеюсь на помощь.

Нужен был скрипт он-лайн калькулятора ( расчет объёмов исходя из множества стартовых данных ). Нашла где-то на просторах инета что-то похожее и адаптировала под нужды нашего сайта. Почти доделала, но "упёрлась" в условные операторы ибо практически не знаю "матчасть", действовала только "на уровне общей эрудиции". И вот, собственно вопрос... как правильно прописать условие расчёта? Нужно, чтобы результат одной переменной варьировался от результата другой. Сам скрипт достаточно громоздкий... я не знаю можно ли выкладывать сюда прямо все сами коды.

Вот часть скрипта с результатами.
Код:
price_cms += parseFloat(type_cms.options[type_cms.selectedIndex].value);
price_design += parseFloat(type_design.options[type_design.selectedIndex].value);
price_design1 += parseFloat(type_design1.options[type_design1.selectedIndex].value);
price_design2 += parseFloat(type_design2.options[type_design2.selectedIndex].value);
price_host += (type_host.checked == true) ? parseFloat(type_host.value) : 0;
price_host1= price_host*price_cms*price_design
price_soprovozhdenie += parseFloat(soprovozhdenie.value);
price_soprovozhdenie01 += parseFloat(soprovozhdenie01.value);
price_soprovozhdenie02 += parseFloat(soprovozhdenie02.value);
price_soprovozhdenie001 += parseFloat(soprovozhdenie001.value);
price_soprovozhdenie002 += parseFloat(soprovozhdenie002.value);
price_soprovozhdenie0001 += parseFloat(soprovozhdenie0001.value);
price_soprovozhdenie0002 += parseFloat(soprovozhdenie0002.value);
price_soprovozhdenie1 += parseFloat(soprovozhdenie1.value);
price_soprovozhdenie2 += parseFloat(soprovozhdenie2.value);
price_soprovozhdenie3 += parseFloat(soprovozhdenie3.value);
price_soprovozhdenie4 += parseFloat(soprovozhdenie4.value);
price_soprovozhdenie5 += parseFloat(soprovozhdenie5.value);
price_soprovozhdenie6 += parseFloat(soprovozhdenie6.value);
price_content += parseInt(content.value)*price_soprovozhdenie*price_soprovozhdenie2;
price_content01 += parseInt(content01.value)*price_soprovozhdenie01*price_soprovozhdenie02;
price_content001 += parseInt(content001.value)*price_soprovozhdenie001*price_soprovozhdenie002;
price_content0001 += parseInt(content0001.value)*price_soprovozhdenie0001*price_soprovozhdenie0002;
price_content1 += parseInt(content1.value)*price_soprovozhdenie;
price_content2 += parseInt(content2.value)*price_soprovozhdenie3*price_soprovozhdenie4;
price_content3 += parseFloat(content3.value)*price_soprovozhdenie5*price_soprovozhdenie6;
price_seo += (seo.checked == true) ? parseFloat(seo.value) : 0;
price_forum += parseFloat(type_forum.options[type_forum.selectedIndex].value);
price_comment += (comment.checked == true) ? parseFloat(comment.value) : 0;
price_gallery += (gallery.checked == true) ? parseFloat(gallery.value) : 0;
price_eshop += (eshop.checked == true) ? parseFloat(eshop.value) : 0;
price_eshop_content += (eshop_content.checked == true) ? parseFloat(eshop_content.value) : 0;
price01=price_content01*price_design*price_cms*price_host;
price001=price_content001*price_design*price_cms*price_host;
price0001=price_content0001*price_design*price_cms*price_host;
price1=price_content*price_design*price_cms*price_host;
price2=price_content2*price_design*price_cms*price_host;
price3=price_content3*price_design*price_cms*price_host;
price=parseFloat(price01 + price001 + price0001 + price1 + price2 + price3);

  
result_cms.innerHTML = price_cms;
result_design.innerHTML = price_design;
result_design1.innerHTML = price_design1;
result_design2.innerHTML = price_design2;
result_host.innerHTML = price_host1;
result_soprovozhdenie.innerHTML = price_soprovozhdenie;
result_soprovozhdenie01.innerHTML = price_soprovozhdenie01;
result_soprovozhdenie02.innerHTML = price_soprovozhdenie02;
result_soprovozhdenie001.innerHTML = price_soprovozhdenie001;
result_soprovozhdenie002.innerHTML = price_soprovozhdenie002;
result_soprovozhdenie0001.innerHTML = price_soprovozhdenie0001;
result_soprovozhdenie0002.innerHTML = price_soprovozhdenie0002;
result_soprovozhdenie1.innerHTML = price_soprovozhdenie1;
result_soprovozhdenie2.innerHTML = price_soprovozhdenie2;
result_soprovozhdenie3.innerHTML = price_soprovozhdenie3;
result_soprovozhdenie4.innerHTML = price_soprovozhdenie4;
result_soprovozhdenie5.innerHTML = price_soprovozhdenie5;
result_soprovozhdenie6.innerHTML = price_soprovozhdenie6;
result_content.innerHTML = price_content;
result_content01.innerHTML = price_content01;
result_content001.innerHTML = price_content001;
result_content0001.innerHTML = price_content0001;
result_content1.innerHTML = price_content1;
result_content2.innerHTML = price_content2;
result_content3.innerHTML = price_content3;
result_seo.innerHTML = price_seo;
result_forum.innerHTML = price_forum;
result_comment.innerHTML = price_comment;
result_gallery.innerHTML = price_gallery;
result_eshop.innerHTML = price_eshop;
result_eshop_content.innerHTML = price_eshop_content;
result.innerHTML = price;

Хотелось бы, чтобы значение параметра result_design2 изменялось в зависимости от соотношения price_design2/price_design1 ... при значении >= приравнивался бы к 1, в противном случае - оставался вот в том же соотношении price_design2/price_design1

И ещё один момент про условные операторы... надо привязать ещё один промежуточный параметр расчета к переменной price_design1 в зависомости от его выбранного значения. Но я надеюсь, что может быть смогу сама сделать по аналогии, если вы подскажете, как правильно прописать первое условие.

PS, заранее прошу извинения за наверное неправильную терминологию и очень надеюсь на подсказку.

С уважением, Наталия.

Ой... в названии темы скрипт "обозвался" криптом, а как исправить - не нашла. )))
(Последний раз сообщение было отредактировано 20.12.2013 в 20:08:33, отредактировал пользователь Natali_SPb.)
20.12.2013 20:05:53
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Прошу помощи по скрипту он-лайн калькулятора
Да, код действительно громоздкий.

(20.12.2013 20:05:53)Natali_SPb писал(а):  Хотелось бы, чтобы значение параметра result_design2 изменялось в зависимости от соотношения price_design2/price_design1 ... при значении >= приравнивался бы к 1, в противном случае - оставался вот в том же соотношении price_design2/price_design1

Я правильно понял, что если price_design2/price_design1 будет больше или равно result_design2, то result_design2 должно равняться единице, а в противном случае оставался вот в том же соотношении price_design2/price_design1?
Или если price_design2/price_design1 больше или равно единицы, то result_design2 должно равняться единице?
Просто Вы как-то сформулировали расплывчато.

Если первый вариант, то так:
Код:
if (result_design2>price_design2/price_design1) {result_design2=1}
else {result_design2=price_design2/price_design1}

Если второй, то так:
Код:
if (price_design2/price_design1>=1) {result_design2=1}
else {result_design2=price_design2/price_design1}

P.S. Название темы поправил. Было бы неплохо, если бы Вы скинули ссылку на Ваш калькулятор в ЛС, тогда мне стало бы намного проще понять что к чему...
21.12.2013 15:19:26
Найти все сообщения Цитировать это сообщение
Natali_SPb Не на форуме
Рядовой
*

Сообщений: 9
У нас с: Dec 2013
Сообщение: #3
RE: Прошу помощи по скрипту он-лайн калькулятора
Большое спасибо, что откликнулись. Да уж... сформулировала я конечно отменно, ничего не скажешь. По-моему второй вариант очень похож на то, что надо изобразить. Я пыталась что-то подобное разместить в коды, но весь скрипт перестаёт просто считать вообще. Sad Может, не туда размещаю...

Весь смысл этого соотношения вот в чем. Если price_design2 больше или равен price_design1, тогда нужен коэффициент корреляции равный 1, а вот если меньше - тогда значение коэффициента должно составлять price_design2/price_design1

Может быть, я вообще не по тому пути иду ... но очень надо перевести Excele-вский вариант расчёта в он-лайновый. И вроде уже почти получается.

Сейчас скину в личку ссыль на страницу. И ещё раз спасибо. Smile
21.12.2013 18:29:11
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Прошу помощи по скрипту он-лайн калькулятора
Только что поглядел, вроде все работает как надо.

У Вас получается, что имеется переменная result_design2 и объект с id="result_design2". Так работать не будет. Лучше переименовать переменную внутри скрипта (например, в ratio_design2).

Так же, для начала, стоит объявить эту переменную: var ratio_design2 = 0;

Тогда получившиеся строчки:
Код:
if (price_design2/price_design1>=1) {ratio_design2=1}
else {ratio_design2=price_design2/price_design1}
Следует добавить сразу после строки
Код:
price_design2 += parseFloat(type_design2.options[type_design2.selectedIndex].value);


И в конце не забываем вывести полученное значение. У Вас это вроде делается в строке result_design2.innerHTML = ratio_design2;
21.12.2013 23:02:06
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #5
RE: Прошу помощи по скрипту он-лайн калькулятора
И напоследок, заметил, что Ваш сайт очень не любит Яндекс (в индексе всего три странички против 1230 у Гугла).

Мой Вам совет: избегайте скрытого текста (в стилях display: none), а так же избавьтесь от большого количества внешних ссылок в левой колонке сайта (так же у Вас имеются ссылки на изображения с домена третьего уровня от Ucoz, видать забыли исправить после покупки домена).
21.12.2013 23:24:08
Найти все сообщения Цитировать это сообщение
Natali_SPb Не на форуме
Рядовой
*

Сообщений: 9
У нас с: Dec 2013
Сообщение: #6
RE: Прошу помощи по скрипту он-лайн калькулятора
Попыталась поставить второй вариант ... не считает. Sad

Может я привязываю функцию не к тем переменным? Но, вроде бы, если пытаться сделать иначе, получается циклическая ошибка... формула замыкается сама на себя и теоретически работать не может. Но скорее всего, я просто чего-то "не понимаю".

Ой... батюшки, отписала сообщение пока ваших было не видно. Спасибо. Пошла разбираться.
(Последний раз сообщение было отредактировано 22.12.2013 в 11:01:26, отредактировал пользователь Natali_SPb.)
22.12.2013 10:59:44
Найти все сообщения Цитировать это сообщение
Natali_SPb Не на форуме
Рядовой
*

Сообщений: 9
У нас с: Dec 2013
Сообщение: #7
RE: Прошу помощи по скрипту он-лайн калькулятора
Ещё раз, спасибо. Первоначальную выборку сделала... работает как надо. Теперь пытаюсь как-то соорудить следующие "по образу и подобию" ... но пока получается не сильно утешительно. )))

PS. Если совсем уж никак не справлюсь, разрешите ещё раз просить вашей помощи...
25.12.2013 00:04:12
Найти все сообщения Цитировать это сообщение
Natali_SPb Не на форуме
Рядовой
*

Сообщений: 9
У нас с: Dec 2013
Сообщение: #8
RE: Прошу помощи по скрипту он-лайн калькулятора
Добрый день! Всё-таки преодолела все единичные и множественные условия, которые было необходимо выставить в нашем калькуляторе. Ещё раз спасибо, что направили "на путь истинный".

Новогодние праздники немножко отвлекли ... села доделывать и теперь "уперлась" в выборку максимального значения среди ранее заведённых переменых.

Объявила новую переменную

var ratio_koefficientobjom = 0;

Строку выборки максимального значения

ratio_koefficientobjom=Math.max("[price_soprovozhdenie[,price_soprovozhdenie01[,price_soprovozhdenie001[,price_soprovozhdenie0001[,price_soprovozhdenie3[,price_soprovozhdenie5]]]]]]");

ставлю сразу за всеми этими переменными, из которых и надо выбирать.

Теоретически получаемое значение вывожу строкой

result_koefficientobjom.innerHTML = ratio_koefficientobjom;

, а калькулятор упорно возвращает NaN. Где ошибка? Точнее понимаю, что ошибка в строке выборки максимального значения, но не пойму какая.

Самое препротивное, что эта выборка максимального - ещё только часть общей формулы. Но если я правильно поняла, то в java не должно быть вложенных функций, значит придётся накручивать последовательно, вводя опять новую переменную. А мне надо этот максимум потом разделить на расчетный объём, вычислить из него корень четвёртой степени, а потом умножить на 2.021

То есть значение следующей переменной будет, что-то вроде вот этого...

=Math.pow("(ratio_koefficientobjom/ratio_maxkoefficient)*2.021",0.25)

Но если я ошибаюсь в простой выборке максимума, то и дальше будет наверное не лучше. Sad Помогите, пожалуйста. Smile

Ещё раз ссыль на страницу _http://scalare-spb.com/index/testovaja_okonch2/0-52
22.01.2014 21:29:11
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #9
RE: Прошу помощи по скрипту он-лайн калькулятора
Надо убрать все квадратные скобки и кавычки:

ratio_koefficientobjom=Math.max(price_soprovozhdenie, price_soprovozhdenie01, price_soprovozhdenie001, price_soprovozhdenie0001, price_soprovozhdenie3, price_soprovozhdenie5);
22.01.2014 21:52:06
Найти все сообщения Цитировать это сообщение
Natali_SPb Не на форуме
Рядовой
*

Сообщений: 9
У нас с: Dec 2013
Сообщение: #10
RE: Прошу помощи по скрипту он-лайн калькулятора
О-о... Огромное спасибо! А я в справочнике нашла такое написание и решила, что это только так и прописывается. Сама ни за что бы не догадалась. Smile

А в следующей формуле надо только кавычки убрать?..

Прописываю следующую переменную с этой формулой

ratio_koefficientobjom1=Math.pow((ratio_koefficientobjom/ratio_maxkoefficient)*2.021,0.25);

а в результат ставит 0 почему-то... Если убираю и внутренние скобки - тоже 0. Sad
(Последний раз сообщение было отредактировано 23.01.2014 в 00:20:11, отредактировал пользователь Natali_SPb.)
22.01.2014 23:45:44
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru