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

点击计算器运算符报[object HTMLDivElement]错误且文本消失如何解决

问题根因
  • 你的operation函数赋值逻辑写反了,且错误地将DOM对象直接赋值给innerHTML属性:你现在的代码是把prev这个DOM元素直接赋值给current的innerHTML,系统会自动把DOM对象转成字符串,就会出现你看到的[object HTMLDivElement]错误
  • 需求是把当前输入的数值复制到prev容器,应该是把current的内容赋值给prev的innerHTML,而不是反过来
优化后代码

JS代码修改

提前缓存DOM元素避免每次点击都重复查询DOM,同时修正赋值逻辑、补充运算符拼接能力:

// 全局缓存两个展示容器的DOM对象,避免重复查询
const currentEl = document.getElementById("current")
const prevEl = document.getElementById("prev")

function calculate(button) {
    const number = button.innerHTML
    currentEl.innerHTML += number
}

function operation(button) {
    // 将当前输入的数值和选中的运算符一起存入prev容器
    prevEl.innerHTML = currentEl.innerHTML + button.innerHTML
    // 清空当前输入区域,准备接收下一个数值
    currentEl.innerHTML = ''
}

HTML代码修改

给所有运算符按钮的点击事件传入当前按钮对象,和数字按钮的传参逻辑保持一致:

<button onClick="operation(this)">÷</button>
<button onClick="operation(this)">*</button>
<button onClick="operation(this)">+</button>
<button onClick="operation(this)">-</button>
额外优化建议
  • 可加判断逻辑,避免用户连续点击多次运算符导致prev内容重复拼接
  • 输入数字时可增加小数点校验,避免出现123.45.67这类非法数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:48:01