Допустим у нас имеется много input-ов и кнопок увеличения и уменьшения значения. Подскажите скрипт, чтобы при нажатии на кнопки изменялся value из того же блока. Желательно без стрелочных функций
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="10" />
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="20" />
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="30" />
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="40" />
<button class="increase" type="button">+</button>
</div>
document.addEventListener('click', function (e) {
if (e.target.classList.contains("increase")) {
++e.target.parentElement.querySelector("input").value;
} else if (e.target.classList.contains("decrease")) {
--e.target.parentElement.querySelector("input").value;
}
})
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="10" />
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="20" />
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="30" />
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="40" />
<button class="increase" type="button">+</button>
</div>
можно так:
Array.prototype.forEach.call(document.querySelectorAll('.decrease'), function (v) {
v.addEventListener('click', dec);
})
Array.prototype.forEach.call(document.querySelectorAll('.increase'), function (v) {
v.addEventListener('click', inc);
})
function dec() {
var div = this.parentElement;
var input = div.children.item(1)
input.setAttribute('value', (parseInt(input.getAttribute('value')) - 1).toString());
}
function inc() {
var div = this.parentElement;
var input = div.children.item(1)
input.setAttribute('value', (parseInt(input.getAttribute('value')) + 1).toString());
}
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="10"/>
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="20"/>
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="30"/>
<button class="increase" type="button">+</button>
</div>
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="40"/>
<button class="increase" type="button">+</button>
</div>
что-нибудь такое подойдёт?
let increase = $('.increase');
increase.on('click', function(){
$(this).prev().val(parseInt($(this).prev().val()) + 1);
})
let decrease = $('.decrease');
decrease.on('click', function(){
$(this).next().val(parseInt($(this).next().val()) - 1);
})
https://jsfiddle.net/30oe85pf/8/
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задался вопросом: как осуществить данный эффект, который на промежутке 0:0 - 0:6? https://wwwdropbox
Надо бы, чтобы одновременно пробелы превращались в <br>, и первая буква становилась заглавная
Делаю выпадающие менюПробовал уже добавлять setTimeout, но он вообще перестает работать