greenfox07
@greenfox07

Почему значения меняются одинаково?

Почему меняя значение с помощью кнопок (красный прямоугольник), значения в синем прямоугольнике меняются одинаково, хотя значения в data разные? Консоль говорит что переменная month всегда выводит 6.
Формула такая: значение между кнопок * цену справа * месяц

До
5b902928b5c4e009695142.jpeg

После изменения значения
5b902955b149f396211375.jpeg

HTML
div.extend-range
			div.range-cursor
			div.extend-range__inner
				div.range-item.active
					div.range-item__top-text
						span.licenses-month(data-month="6") 6 months
					div.range-item__bottom-text
						span.discount 30
						span.extend-price 107.82
				div.range-item
					div.range-item__top-text
						span.licenses-month(data-month="9") 9 months
					div.range-item__bottom-text
						span.discount 45
						span.extend-price 161.73
				div.range-item
					div.range-item__top-text
						span.licenses-month(data-month="12") 1 year
					div.range-item__bottom-text
						span.discount 75
						span.extend-price 215.64
				div.range-item
					div.range-item__top-text
						span.licenses-month(data-month="24") 2 years
					div.range-item__bottom-text
						span.discount 120
						span.extend-price 431.28


JS
let licensesCount = $('.licenses-count');
	let discountPrice = $('.discount').html();
	const defaultPrice = $('.price').text();
	let extendPrice = $('.extend-price');
	let totalSumm = $('#total-summ');
	const month = $('.licenses-month').attr('data-month');

	$('#plus-btn').click(function() {
		licensesCount.val(parseInt(licensesCount.val())+1);

		let count = licensesCount.val();

		let summ = parseInt(count * month * defaultPrice * 100) / 100;
		let total = parseInt(((summ - discountPrice) * 100)) / 100;
		
		totalSumm.text(total);
		extendPrice.text(summ);
	});
	$('#minus-btn').click(function() {
		licensesCount.val(Math.max(licensesCount.attr('min'), parseInt(licensesCount.val()) - 1));
		
		let count = licensesCount.val();

		let summ = parseInt(count * month * defaultPrice * 100) / 100;
		let total = parseInt(((summ - discountPrice) * 100)) / 100;
		
		totalSumm.text(total);
		extendPrice.text(summ);
	});
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
@qq1
У вас month всегда 6, а его нужно получать динамически для каждого периода подписки.
Там где extendPrice.text(summ);
заменить на что-то вроде
extendPrice.text(function(){
  let month = $(this).closest('.range-item').find('.licenses-month').attr('data-month');
  return parseInt(count * month * defaultPrice * 100) / 100;
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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