如果页面上可以有多组按钮和输入,如何通过单击按钮 (+/-) 更改输入值并从现有表中获取值?
$(function() {
var countInputs = document.getElementsByClassName('count-buttons');
for (var input in countInputs) {
if (!countInputs.hasOwnProperty(input)) {
continue;
}
var butM = input.getElementsByClassName('btn-minus');
var butP = input.getElementsByClassName('btn-plus');
var units = countInput.value.replace(/\d/g, '');
butP.onclick = function() {
countInput.value = parseInt(countInput.value) + 1 + units;
};
butM.onclick = function() {
if (parseInt(countInput.value) > 1) {
countInput.value = parseInt(countInput.value) - 1 + units;
}
};
$(function() {
document.querySelector('.count-buttons').onmouseover = (function() {
document.querySelector('.count-buttons__table').style.display = 'table';
});
document.querySelector('.count-buttons__table').onmouseout = (function() {
document.querySelector('.count-buttons__table').style.display = 'none';
});
var elems = document.querySelectorAll('.count-buttons__table-td');
for (var i = elems.length - 1; i >= 0; i--) {
elems[i].addEventListener('click', myFunc, false);
}
function myFunc() {
document.getElementsByClassName('qty').value = this.innerHTML;
}
});
<div class="count-buttons">
<button type="button" class="btn ctrl btn-minus">
<span>−</span></button>
<input name="" value="" size="4" title="" class="input-text qty" maxlength="12" />
<button type="button" class="btn ctrl btn-plus"><span>+</span></button>
<div class="count-buttons__table">
<div class="count-buttons__table-tr">
<div class="count-buttons__table-td">6</div>
<div class="count-buttons__table-td">12</div>
<div class="count-buttons__table-td">18</div>
</div>
<div class="count-buttons__table-tr">
<div class="count-buttons__table-td">24</div>
<div class="count-buttons__table-td">30</div>
<div class="count-buttons__table-td">36</div>
</div>
</div>
</div>
UPD
归根结底,value 的取值有两种方式:
有可能以某种方式解决这个问题。
如果你不明白我为什么使用 this、prototype 和 new,那么请阅读“原型风格中的 OOP ”和“对象方法和调用上下文”章节。
不幸的是,@dmitryshishkin 建议的答案对我不起作用,因为 发生了一个奇怪的错误-单击按钮
+/-时,值一次增加/减少了两个数字...最后,我得到了这个代码:
任务并不完全清楚。
如果您想要一个带有按钮
-/+和弹出选项的输入字段,那么在这里:加上一个选项,一个自定义“输入”表:
代码远非跨浏览器,这些只是示例。