Javascript.RU

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

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

Код:
<script>
function summ() {

var result = document.getElementById("result");
var item2 = 0;
var item1 = 0;
var dop = document.getElementById('dop');

var item1 = document.getElementById("item1").value*2000;
if (dop.checked) item2 = +dop.value;
result.innerHTML = item1 + item2;
}
</script>
<div>
item 1
<a onClick="document.getElementById('item1').value--"><button>-</button></a>
<input type="number" min="0" value="0" id="item1" onchange="summ()" />
<a onClick="document.getElementById('item1').value++"><button>+</button></a>

<br><br>
<input type="checkbox" id="dop" value="300" />
<label for="dop">item 2</label>

<br><br>
Общая стоимость
<div id="result">0</div>
</div>
При изменении значения item1 стандартными кнопками в input number стоимость меняется нормально, если через + или - то меняется значение только в поле input, стоимость не считается.
Второй вопрос касается checkbox, как сделать что бы изменение цены отображалось сразу при клике, пробовал через событие onpropertychange, но результата это не дало.
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2014, 19:43
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
При изменении значения item1 стандартными кнопками в input number стоимость меняется нормально, если через + или - то меняется значение только в поле input, стоимость не считается.
Правильно, потому что программное изменение значения событие change не вызывает. Вызывай свой summ при клике на кнопку (и да, в ссылку ее оборачивать не нужно):
<button onclick="document.getElementById('item1').value--; summ();">-</button>

Цитата:
Второй вопрос касается checkbox, как сделать что бы изменение цены отображалось сразу при клике, пробовал через событие onpropertychange, но результата это не дало.
onchange

Последний раз редактировалось Erolast, 23.09.2014 в 19:47.
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2014, 21:05
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от Saillens
Начал изучать javascript, пытаюсь создать калькулятор стоимости и столкнулся с двумя проблемами
Обе проблемы перечислены в преамбуле: яваскрипт и калькулятор. Разве можно желать большего.

Засуньте все поля в форму, на событие change формы запрограммируйте на функцию в которой все в одной и считайте. Там же меняйте значение каждого прилетевшего элемента согласно логике приложения. На выходе - рендер соберет все данные и положит их в output. У формы кроме input'ов есть и output'ы, специально для рендера результатов (и промежуточных) результатов расчетов.

А как вы начали делать - то колхоз.
Ответить с цитированием
  #4 (permalink)  
Старый 24.09.2014, 05:32
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Засуньте все поля в форму, на событие change формы запрограммируйте на функцию в которой все в одной и считайте.
На программное измнение все равно не среагирует.
Вообще, по-хорошему такой калкулятор должен генериться динамически по заданным параметрам.
Ответить с цитированием
  #5 (permalink)  
Старый 24.09.2014, 09:17
Новичок на форуме
Отправить личное сообщение для Saillens Посмотреть профиль Найти все сообщения от Saillens
 
Регистрация: 23.09.2014
Сообщений: 2

Спасибо, разобрался.
Ответить с цитированием
  #6 (permalink)  
Старый 26.09.2014, 17:04
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от Erolast
На программное измнение все равно не среагирует.
Калькулятор в винде ничего сам не делает пока кнопку не нажмешь. Или вы про какие калькуляторы?
Ответить с цитированием
  #7 (permalink)  
Старый 26.09.2014, 18:46
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Калькулятор ТС-а, очевидно, должен на изменение параметров реагировать сразу. От того и была первая проблема.
Ответить с цитированием
  #8 (permalink)  
Старый 26.09.2014, 20:05
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Это не проблема. Проблема если бы ТС захотел вычислять выражение, то есть парсить строку, получать токены и считать результат. А тут все просто. Просто надо нормализовать. Вместо

if (dop.checked)
   item2 = +dop.value;



так

item2+=dop.value;


Когда доп щелкнули, метод знающий сколько в допе должно быть когда его щелкнули - записал в его валуе то самое значение. Когда щелкнули еще - записал другое. И так каждый элемент согласно модели. Которую остается только посчитать по нажатию кнопки =. КОторую сами понимаете может нажать любой нажатый элемент после того как нормализовал свои данные. Ну или типа того.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача значений из ячеек таблицы в поля ayubu87 AJAX и COMET 1 26.05.2014 08:21
Передача значений атрибута в массив Does Общие вопросы Javascript 4 19.08.2013 18:30
Передача значений полей через JS MCTrane Общие вопросы Javascript 11 01.12.2010 18:32
Передача массива значений флажков LRCenter Общие вопросы Javascript 2 05.10.2010 19:49
Передача значений из iframe в тело страницы z00m Общие вопросы Javascript 7 01.05.2009 17:20