函数比javascript中的步进器增加/减少更多

function to increment / decrement more than stepper in javascript

本文关键字:增加 javascript 步进 函数      更新时间:2023-09-26

你好,我正在尝试重写一个函数,该函数将在javascript中递增/递减1步以上。以下是我迄今为止尝试的

这是一个代码笔链接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用于将字符串转换为其等效数字。以10为基数来调用它没有多大意义
  • 不确定name参数对stepperVal的意义是什么。value参数不是已经暗示了要阶梯的量吗
  • 通过将this传递给在onclick中声明的函数,可以传递对触发onclick事件的对象的引用
  • new_qty总是计算为val
  • CCD_ 10实际上与CCD_。为什么不这么说呢

更新的代码

将中的"一"替换为this

<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`
}

使用以下它必须工作:

function stepperVal(name,val){
var qty = 0;
var new_qty = parseInt(document.getElementsByName(name),10) + val;
  if (new_qty < 0) {
   new_qty = 0;
   }
  document.getElementsByName(name).value = new_qty;
return new_qty;
}