您好,我正在尝试重写一个函数,该函数将在javascript中增加/减少1个步进。这是我到目前为止尝试过的
这是一个Codepen链接http://codepen.io/Ongomobile/pen/XdyBgv/
这是其中之一
<div class="qtyDiv">
<label class="qtyLabel" for="qty1 " name"one"><abbr title="Quantity">Qty</abbr></label>
<input class="qtyInput" id="qty1" value="0" name"one" />
<!-- <button class=" tallyBtn" id="down" onclick="modify_qty(-1)">-1</button>
<button class="tallyBtn"id="up" onclick="modify_qty(1)">+1</button> -->
<button class=" tallyBtn" id="down" onclick="stepperVal("one",-1)">-1</button>
<button class="tallyBtn"id="up" onclick="stepperVal("one",1)">+1</button>
</div>
// This is current one
function modify_qty(val) {
var qty = document.querySelector("#qty1").value;
var new_qty = parseInt(qty,10) + val;
if (new_qty < 0) {
new_qty = 0;
}
document.querySelector("#qty1").value = new_qty;
return new_qty;
}
这就是我尝试过的
function stepperVal(name,val){
var qty = 0;
var new_qty = parseInt(qty,10) + val;
if (new_qty < 0) {
new_qty = 0;
}
[name].value = new_qty;
return new_qty;
}
最佳答案
一些问题:
此行parseInt(qty,10) + val;
的目的是什么? parseInt
用于将字符串转换为其等效数字。以base10号码调用它没有多大意义。
不确定stepperVal
的name参数的含义是什么。 value
参数是否已隐含要逐步增加的金额?
通过将onclick
传递给在this
中声明的函数,可以传递对触发onclick
事件的对象的引用。new_qty
始终计算为val
stepperVal(arg,-1)
实际上与stepperVal(arg,0)
相同。为什么不这样称呼它呢?
更新的代码
用this
替换“ one”:
<div class="qtyDiv">
<label class="qtyLabel" for="qty1 " name"one"><abbr title="Quantity">Qty</abbr></label>
<input class="qtyInput" id="qty1" value="0" name"one" />
<!-- <button class=" tallyBtn" id="down" onclick="modify_qty(-1)">-1</button>
<button class="tallyBtn"id="up" onclick="modify_qty(1)">+1</button> -->
<button class=" tallyBtn" id="down" onclick="stepperVal(this,-1)">-1</button>
<button class="tallyBtn"id="up" onclick="stepperVal(this,1)">+1</button>
</div>
简化的JS:
function stepperVal(event, val){
clicked_link = event.target
return clicked_link.value = Math.max(0, val); # Return the greater of 0 and `val`
}