You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么JS点击按钮数值减量正常、增量却变成字符串拼接,如何修复?

数值加减按钮增量操作变成字符串拼接问题修复方案

问题表现

实现点击按钮对数值进行±10运算时,减量操作符合预期,但增量操作触发字符串拼接,得到类似1010101010的异常结果。

问题代码

HTML

<div class="container">  
  <div class="input-container">
    <div id="minus">-</div>
    <input type="text" id="number" value="0">
    <div id="plus">+</div>
  </div>
</div> 

JavaScript

(function(){
  let inputContainer = document.querySelector(".input-container");
  let input = inputContainer.firstElementChild.nextElementSibling;
  let minus = inputContainer.firstElementChild;
  let plus = inputContainer.lastElementChild;
  function changeNumber(e) {
      if(e.target === minus) {
          input.value -= 10;
      } else if(e.target === plus) {
          input.value += 10;
      }
  }
  inputContainer.addEventListener("click", changeNumber);
})();

修复方案(使用parseInt())

HTML代码与上方一致,修改后的JavaScript代码如下:

(function(){
  let inputContainer = document.querySelector(".input-container");
  let input = inputContainer.firstElementChild.nextElementSibling;
  let minus = inputContainer.firstElementChild;
  let plus = inputContainer.lastElementChild;
  function changeNumber(e) {
      if(e.target == minus) {
          let inputNumber = parseInt(input.value);
        input.value = inputNumber - 10;
      } else if(e.target == plus) {
          let inputNumber = parseInt(input.value);
        input.value = inputNumber + 10;
      }
  }
  inputContainer.addEventListener("click", changeNumber);
})();

原因说明

input元素的value属性默认是字符串类型,-=运算符会自动将字符串转换为数字进行运算,而+=会优先触发字符串拼接逻辑,因此需要先用parseInt()将value转为数值类型再进行运算。

内容的提问来源于stack exchange,提问作者junior_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:27:04