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

如何将多段重复的JavaScript函数改写为单个函数?

简化重复函数的方案

你可以把重复的逻辑抽成一个接受目标编号作为参数的通用函数,彻底替代原来的6个重复函数:

基础通用函数写法

function updateDemo(targetNumber) {
  // 先获取目标元素,避免重复调用querySelector
  const demoElement = document.querySelector("#demo");
  const sourceElement = document.querySelector(`#demo${targetNumber}`);
  
  // 加个判断,防止找不到元素时出现报错
  if (sourceElement) {
    demoElement.innerHTML = sourceElement.innerHTML;
  }
}

使用方式

原来调用myFunction1()的地方直接改成updateDemo(1),调用myFunction2()改成updateDemo(2),以此类推,完全兼容原有逻辑。

更优雅的事件绑定写法(推荐)

如果这些函数是绑定在按钮等触发元素上的,可以用事件委托进一步简化,不用单独给每个元素绑定函数:

  1. 先给触发按钮添加自定义属性,标记对应的目标编号:
<button data-demo-target="1">加载demo1内容</button>
<button data-demo-target="2">加载demo2内容</button>
<button data-demo-target="3">加载demo3内容</button>
<!-- ... 其余按钮同理 -->
  1. 写一个全局事件监听函数:
document.addEventListener('click', function(e) {
  // 从点击元素上获取目标编号
  const targetNum = e.target.dataset.demoTarget;
  if (!targetNum) return; // 不是目标按钮就直接返回

  const demoElement = document.querySelector("#demo");
  const sourceElement = document.querySelector(`#demo${targetNum}`);
  
  if (sourceElement) {
    demoElement.innerHTML = sourceElement.innerHTML;
  }
});

这种写法不管你有多少个目标元素,都只需要这一段代码,后续新增元素也不用改JS,只需要加对应属性的按钮即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:01:22