Есть javascript:
$(document).on('click', '.plus-minus button', function() {
var btn = $(this),
oldValue = btn.closest('.plus-minus').find('input').val().trim(),
newVal = 1;
if (btn.attr('data-dir') == 'up') {
newVal = parseInt(oldValue) + 1;
} else {
if (oldValue > 1) {
newVal = parseInt(oldValue) - 1;
} else {
newVal = 1;
}
}
btn.closest('.plus-minus').find('input').val(newVal);
});
Смысл в том, что на странице интернет-магазина при нажатии кнопок +
или -
добавляется или уменьшается количество товара в поле input
. Но он добавляет всегда +1
или -1
к текущему значению. Как переписать его так, чтобы он прибавлял к старому значению это же значение каждый раз?
Пример: первоначальное значение = 2
. Нажимаем +
и добавляется количество товара +2
(в итоге получается 4
), нажимаем еще +
и добавляется первоначальное значение к текущему (4
+2
) в итоге получаем 6
. С вычитанием такая же логика должна быть - вычитать самое первое значение. Пробовал просто суммировать каждый раз oldValue
+ oldValue
, но получается что он каждый раз его удваивает.
Попробуйте так:
var vl = false;
$(document).on('click', '.plus-minus button', function() {
var btn = $(this),
oldValue = btn.closest('.plus-minus').find('input').val().trim(),
newVal = vl || oldValue;
vl = newVal;
if (btn.attr('data-dir') == 'up') {
newVal = parseInt(oldValue) + 1;
} else {
if (oldValue > 1) {
newVal = parseInt(oldValue) - 1;
} else {
newVal = 1;
}
}
btn.closest('.plus-minus').find('input').val(newVal);
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты