Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Простой калькулятор (https://javascript.ru/forum/events/45159-prostojj-kalkulyator.html)

AlexFoxx 17.02.2014 13:47

Простой калькулятор
 
Подскажите, пожалуйста, как должен выглядеть и быть написан простейший калькулятор:
Я хочу заказать  
<select name="services">
<option value=""></option>
<option value="copywriting">Копирайтинг и SEO-копирайтинг</option>
<option value="selltext">Продающий текст</option>
<option value="hometext">Текст на главную страницу сайта</option>
// и т.д.
</select>
<br>
Мне нужен текст объемом
<input type="text" name="vol" size="3" value="" placeholder="3500"> знаков (без пробелов)
<br>

который перемножает между собой выбранный select и объем и выводит 'result' в текстовую графу.

Да, "option value=" нужно оставить в текстовом виде, т.к. форма отправляется на почту, а некоторые услуги стоят одинаково.

В идеале, если объем больше N1, то вся сумма должна умножаться на скидку M1, а если больше N2, то умножаем на скидку M2

Спасибо.

рони 17.02.2014 14:09

AlexFoxx,
а сами капельку ну чуть чуть ?

AlexFoxx 17.02.2014 14:17

Я чего не пойму...если я ID припишу всему селектору, то значения для расчетов будут браться из value (где мне надо чтобы был текст)?
Остальное тащем-та просто.

В общем, как мне правильно присвоить числовое (цену) значение опциям селектора?

рони 17.02.2014 15:21

AlexFoxx,
:cray:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
   Я хочу заказать
<select name="services"  >
<option value=""></option>
<option value="copywriting">Копирайтинг и SEO-копирайтинг</option>
<option value="selltext">Продающий текст</option>
<option value="hometext">Текст на главную страницу сайта</option>
// и т.д.
</select>
<br>
Мне нужен текст объемом
<input type="text" name="vol" size="3" value="" placeholder="3500"> знаков (без пробелов)
<br>
<script>
   var ser = document.querySelector('[name="services"]'),
       vol = document.querySelector('[name="vol"]'),
       sum = {
           "copywriting": 100,
           "selltext": 200,
           "hometext": 500
       };
   ser.onchange = vol.oninput = function () {
       alert((+vol.value || 0) * (sum[ser.value] || 0))
   }
</script>
</body>

</html>

AlexFoxx 17.02.2014 17:40

Большое спасибо!

kostyanet 18.02.2014 06:11

<option value="copywriting" data-price="100500">Копирайтинг и SEO-копирайтинг</option>


// canonical js

try{
  alert('Yo have to pay: '+getElementById('copywriting').dataset.price * document.getElementsByName('vol')[0].value)+'bucks';
}catch(e){
  alert('something went wrong');
}

kostyanet 18.02.2014 06:16

Я лишь одного не понял - у сеошников и копирайтеров не принято публиковать прайсы?

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

А если скрипт не видит цену, то юзер что видит?

preproger 18.02.2014 09:45

Цитата:

Сообщение от kostyanet (Сообщение 298149)
Я лишь одного не понял - у сеошников и копирайтеров не принято публиковать прайсы?
Другими словами если юзер видит цену, то и скрипт ее увидит там же, или в лучшем месте откуда юзеру рендерится.
А если скрипт не видит цену, то юзер что видит?

На копирайт вроде указывают всегда точную цену за т.з. или за "текст".

AlexFoxx 18.02.2014 14:22

Есть у нас и прайсы и все цены видит юзер...другое дело, что копирайтеры вроде как тексты пишут, а не коды :no: Тем не менее, задача оказалась решена - все же у нас простенький wordpress-сайт, а не портал с кучей услуг. Получился конечно былокод и при изменении цен надо будет делать двойную работу, но пока пусть так будет...
Подскажите мне, плз, еще один простой момент и я буду бесконечно счастлив.
Быдлокод:
<script>
   var ser = document.querySelector('[name="services"]'),
       vol = document.querySelector('[name="vol"]'),
       sum = {
           "copywriting": 350,
           "selltext": 600,
           "hometext": 550,
	   "abouttext": 500,
	   "formedia": 450,
	   "pressrel": 400,
	   "goods": 200,
	   "rewriting": 200,
	   "commercial": 500,
	   "comments": 80,
	   "context": 100,
	   "blogs": 350,
	   "mailing": 350,
	   "news": 350,
	   "present": 750,
	   "poetry": 200,
	   "prose": 250,
	   "editing": 150,
	   "correction": 100
	     };
   ser.onchange = vol.oninput = function calc () {
   var price = 0;
       price = ((+vol.value || 0) * (sum[ser.value] || 0)/1000);
result.innerHTML = price;
   }
</script>


Как правильно написать тут же на яве про скидки, типа

if $vol > 49999 { $price = $price * 0.9; }
elseif $vol > 99999 { $price = $price * 0.85; }
else ...ну обычная $price

как все это правильно вкрутить в тот быдлокод?

рони 18.02.2014 14:35

AlexFoxx,
:-?
var ser = document.querySelector('[name="services"]'),
       vol = document.querySelector('[name="vol"]'),
       sum = {
           "copywriting": 350,
           "selltext": 600,
           "hometext": 550,
	   "abouttext": 500,
	   "formedia": 450,
	   "pressrel": 400,
	   "goods": 200,
	   "rewriting": 200,
	   "commercial": 500,
	   "comments": 80,
	   "context": 100,
	   "blogs": 350,
	   "mailing": 350,
	   "news": 350,
	   "present": 750,
	   "poetry": 200,
	   "prose": 250,
	   "editing": 150,
	   "correction": 100
	     };
   ser.onchange = vol.oninput = function calc () {
   var price = 0, text = +vol.value || 0;
       price = (text * (sum[ser.value] || 0)/1000);
       if (text > 99999) price *= 0.85;
       else if (text > 49999) price *= 0.9;
result.innerHTML = price;
   }


Часовой пояс GMT +3, время: 13:40.