@denislandar

Не меняется сумма в input, почему?

Добрый вечер!
На сайте есть мини-магазин. Там действует система скидок, если количество больше чем 12, то цена меняется, но она изменилась только внешне, при добавлении товара цена не меняется. Почему? Что не так?
Вот эта страница:
5a9f1e3b9746f380473440.jpeg5a9f1e4a73af0610839641.png

Пример ячейки с товаром:
<tr>
	<td><img src="img/order/ballon.png" alt="НПУ POLYNOR"></td>
	<td><span id="cena">280</span>
	<div class="number">
		<span style="user-select: none;padding:3px 9px 3px 9px;" class="minus">-</span>
		<input style="user-select: none;background-color: #fff;" id="inp" type="text" value="0" size="5" />
		<span style="user-select: none;" class="plus">+</span>
	</div>
	</td>
</tr>


"Калькулятор":
$(function() {
	var table = $(".order-table"),
	div = table.find(".number"),
	input = div.find("input").get(),
	total = $(".order-end-form>input:text");

	function sum() {
		var n = input.reduce(function(s, el) {
			var val = +el.value || 0,
			price = +el.dataset.price || 0;
			val < 0 && (val = 0);
			return s + val * price
		}, 0);
		total.val(n)
	}
	div.each(function(indx, el) {
		var price = parseInt($(el).prev().text()),
		input = $("input", el).on({
			input: sum
		})[0];
		input.dataset.price = price;
		$(el).on("click", ".minus, .plus", function(event) {
			val = +input.value || 0;
			$(event.target).is(".minus") ?
			val-- : val++;
			val < 0 && (val = 0);
			input.value = val;
			sum()
		})
	})
});


Замена цены(стоит перед закрывающим тегом body):
<script>
	 function cena(){
				var a = [[120,250,'#0F0'],[48,260,'#590'],[12,270,'#950'],[1,280,'#F00']].find(el => el[0] <= (+inp.value||1)),
					cena = document.querySelector("#cena");
					cena.textContent = a[1];
					cena.style.color = a[2];
				};

				document.querySelector('#inp').addEventListener("input", cena, false);
				document.body.addEventListener("click", cena, false); 
				window.addEventListener("DOMContentLoaded", cena, false);
			</script>
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
kreotech
@kreotech
Абстрактно-ориентированный программист
У вас нету нигде ссылок на поле в котором бы цена отправлялась бы на сервер или использовалось бы для взаимодействия с другими блоками, кроме блока вывода цены.
Все что делает функция замены цены - изменяет содержимое этого блока: <span id="cena">280</span>

Строка отвечающая за выбор именно данного блока: cena = document.querySelector("#cena");

Если требуется чтобы цена изменялась еще где-нибудь или отправлялась на сервер. Тогда можно допустим сделать скрытое поле в форме. Которое будет изменяться этим скриптом, при этом само будет не видно и не доступно для изменения пользователю.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы