Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Калькулятор со значениями зависимыми от значении в checked (https://javascript.ru/forum/misc/51284-kalkulyator-so-znacheniyami-zavisimymi-ot-znachenii-v-checked.html)

JuJuTs 31.10.2014 15:37

Калькулятор со значениями зависимыми от значении в checked
 
Калькулятор подобный этому http://spb.rt.ru/hometv/tariff
При выборе checked зависит цена как в примере Пакеты каналов

var k=0;
 if (cinema.checked == true)
 {k=k+1;
 }
  if (sport.checked == true)
 {k=k+1;
 }
 
  if (child.checked == true)
 {k=k+1;
 }
 
 if (cinema.checked == false)
 {k=k-1;
 }
  if (sport.checked == false)
 {k=k-1;
 }
 
  if (child.checked == false)
 {k=k-1;
 }
 if (k==1)
 {
 }

Не знаю как реализовать проверку, что нажато и этому значению присваивать цену 200, а другим 159
А потом в конце все это суммировать

caetus 02.11.2014 23:19

<div id="basket">

<div>
<span>цена</span>
<input type="checked" data-check="basket">
</div>
<div>
<span>цена</span>
<input type="checked" data-check="basket">
</div>

<div>
<span>цена</span>
<input type="checked" data-check="basket">
</div>

</div>

(function () {


var basket = document.getElementById('basket');
var price  = 0;

basket.addEventListener('click', fn, false)

function fn (e) { 
var e = e.target || e.srcElement;

if(e.getAttribute('data-check') != 'basket') return;

var price_ = +e.parentNode.children[0].innerHTML;

if(e.checked == true) price += price_;

else if (e.checked == false) price -= price_;

document.getElementById('елемент где будем выводить цену').innerHTML = price;

}

}());

kostyanet 03.11.2014 05:47

А что правда у checkbox в хтмле есть среднее положение?

kostyanet 03.11.2014 06:00

Насчет этих чеков долбаных. Где у него параметр?

cinema.checked == true

это не параметр, это - индикатор. Вкл/выкл - вот и все. Значение, семантика этого вкл/выкл известна модели, по имени индикатора, следовательно модель может сразу задать эту семантику индикатора значением или выражением.

<input type="checkbox" value="+1.25" name="plus_odin_25"/>

Теперь у индикатора появился смысл. Если он горит используем его Value, иначе пропускаем. Что еще можно сделать? Сделать так чтобы параметр менялся в зависимости от состояния индикатора.

<input type="checkbox" value="+1.25" name="plus_odin_25" onchange="{this.checked?this.value=1.25:this.value =1}"/>

Ну вот, калькулятор просто собирает данные с полей и суммирует. Чтоб вычесть надо записать -1.25, чтобы поделить на 2 надо записать 0.5, или пусть считает сам - 1/2, чтобы извлечь корень надо возвести в дробную степень pow(0.5) - прямо в валуе все пишите.

Кроме того - нормализация. Загоняете параметр в диапазон от 0 до 1, а на выходе приводите к реальной единице измерения.


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