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

不使用jQuery,如何逻辑精简优化这段原生JavaScript DOM操作代码?

原生JS优化DOM创建代码方案

方案1:抽离复用逻辑+配置化遍历(安全无XSS风险)

该方案通过抽离公共的DOM创建逻辑合并重复代码,后续新增记录只需要修改配置数组即可,维护成本更低,且完全规避XSS注入风险。

// 抽离公共的元素创建工具函数
function createEl(tag, attrs = {}, children = []) {
  const el = document.createElement(tag);
  // 批量设置属性
  Object.entries(attrs).forEach(([key, val]) => {
    if (key === 'style') el.style.cssText = val;
    else if (key === 'text') el.textContent = val;
    else el.setAttribute(key, val);
  });
  // 批量追加子元素
  children.forEach(child => el.appendChild(child));
  return el;
}

// 要渲染的记录配置,后续新增直接加项即可
const recordList = [
  { label: 'A Record', value: xhttp.responseText },
  { label: 'WWW Record', value: xhttp.responseText },
  { label: 'FTP Record', value: xhttp.responseText }
];

// 批量生成子元素
const children = [];
recordList.forEach(item => {
  children.push(
    createEl('span', { style: 'font-weight:bold', text: item.label }),
    createEl('br'),
    createEl('span', { text: item.value }),
    createEl('br')
  );
});

// 创建主容器并插入到目标节点
const mainDiv = createEl('div', { style: 'margin:15px' }, children);
ticketForm.appendChild(mainDiv);

方案2:innerHTML简写(仅适合内容完全可控场景)

如果所有展示内容均为自身可控、不存在用户输入的场景,可以直接拼接HTML字符串一次性插入,代码更简洁:

// 注意:如果value包含用户输入内容,禁止使用该方案,存在XSS注入风险
ticketForm.innerHTML += `
<div style="margin:15px">
  ${['A Record', 'WWW Record', 'FTP Record'].map(label => `
    <span style="font-weight:bold">${label}</span><br>
    <span>${xhttp.responseText}</span><br>
  `).join('')}
</div>
`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:15:03