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

纯JavaScript实现计算器:不使用onclick点击按钮显示对应数字

实现方案

不用行内onclick属性的前提下,我们可以通过addEventListener绑定点击事件实现需求,推荐使用事件委托的写法,性能更高,后续新增按钮也不需要重复绑定事件。

完整代码示例

HTML部分

首先补全计算器屏幕的结构,同时给所有按钮套一个父容器方便做事件委托:

<!-- 计算器屏幕 -->
<div id="screen" style="width: 220px;height: 36px;border: 1px solid #eee;border-radius: 4px;margin-bottom: 12px;padding: 0 10px;line-height: 36px;"></div>

<!-- 数字按钮父容器 -->
<div class="num-btn-wrapper">
  <button>1</button>
  <button>2</button>
  <button>3</button>
  <button>4</button>
  <button>5</button>
  <button>6</button>
  <button>6</button>
  <button>8</button>
  <button>9</button>
  <button>10</button>
</div>

JavaScript部分

// 获取屏幕元素
const calcScreen = document.getElementById('screen')
// 获取按钮父容器
const btnWrapper = document.querySelector('.num-btn-wrapper')

// 给父容器绑定点击事件,利用事件冒泡捕获子按钮的点击行为
btnWrapper.addEventListener('click', (e) => {
  // 仅当点击的目标是按钮元素时触发逻辑
  if(e.target.tagName === 'BUTTON') {
    // 直接覆盖屏幕内容,无需额外清空之前的输入
    calcScreen.textContent = e.target.textContent
  }
})

可选写法:逐个绑定按钮事件

如果不想用事件委托,也可以直接给所有按钮单独绑定事件:

const calcScreen = document.getElementById('screen')
// 获取所有数字按钮
const numBtns = document.querySelectorAll('button')

numBtns.forEach(btn => {
  btn.addEventListener('click', function() {
    calcScreen.textContent = this.textContent
  })
})

内容的提问来源于stack exchange,提问作者jerome richard A R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:06:07