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

如何避免页面加载和DOM变更时重复执行JS计算器的更新代码

解决方案

将重复的摘要框更新逻辑抽离为独立的公共函数,分别在输入事件绑定、页面初始化两个场景复用即可,完全消除重复代码,后续修改逻辑只需调整一处。
额外优化建议:推荐将keyup事件替换为input事件,可覆盖用户粘贴、鼠标调整输入框数值、右键剪切修改等所有输入值变动场景,适配更多用户操作习惯。

修改后完整代码如下:

// 封装独立的摘要更新逻辑
function updateSummary() {
  invDisplay.innerText = `£${investment.value}`;
  netProfit.innerText = `£${grossProfitLoss()}`;
  invFeeDisplay.innerText = `£${withInvFee()}`;
  netProfitLossDisplay.innerText = `£${netProfitDisplay()}`;
}

// 输入框元素数组
const innerElementsArr = [investment, buying, selling, invFee];

// 为所有输入框绑定值变动事件
innerElementsArr.forEach(item => {
  // 如需保留原keyup事件可替换回去,input事件覆盖场景更全面
  item.addEventListener('input', updateSummary);
});

// 页面加载完成后主动调用一次,完成初始值的摘要渲染
updateSummary();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:02