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

如何配置动态追加的Ace Editor,避免生成多余HTML?

动态创建并配置Ace Editor(避免冗余HTML)

我来给你优化一下动态创建Ace Editor的方案,既能满足你动态追加的需求,还能避免多余的HTML代码问题:

方案一:用jQuery原生元素创建(推荐)

这种方式不用手动拼接HTML字符串,既能避免转义字符(比如你之前用的<),还能让代码更健壮、易维护:

// 初始化计数器
let editorsOnScreen = 0;

// 封装成函数,方便调用
function addNewAceEditor() {
  editorsOnScreen++;
  
  // 创建外层容器
  const questionContainer = $('<div>', {
    class: 'questionContainer w-100',
    id: `questionContainer_${editorsOnScreen}`
  });
  
  // 创建编辑器容器
  const editorDiv = $('<div>', {
    class: 'editor',
    id: `editor_${editorsOnScreen}`,
    text: '//Code Here'
  });
  
  // 组装并追加到目标容器
  questionContainer.append(editorDiv);
  $('#container').append(questionContainer);
  
  // 初始化并配置Ace Editor
  const editor = ace.edit(`editor_${editorsOnScreen}`);
  // 示例配置:设置主题、语言模式
  editor.setTheme('ace/theme/monokai');
  editor.getSession().setMode('ace/mode/javascript');
  // 其他自定义配置...
}

方案二:优化模板字符串写法

如果你更习惯用模板字符串,也可以去掉多余的转义字符,用ES6的变量插值让代码更简洁:

let editorsOnScreen = 0;

function addNewAceEditor() {
  editorsOnScreen++;
  
  // 直接写正常的HTML标签,不用转义
  const editorHTML = `
  <div class="questionContainer w-100" id="questionContainer_${editorsOnScreen}">
    <div class="editor" id="editor_${editorsOnScreen}">//Code Here</div>
  </div>
  `;
  
  $("#container").append(editorHTML);
  
  // 初始化编辑器
  const editor = ace.edit(`editor_${editorsOnScreen}`);
  // 你的配置代码...
}

额外小技巧

可以把所有创建的编辑器实例存到一个数组里,后续批量操作会更方便:

const editorInstances = [];

// 在初始化编辑器后:
editorInstances.push(editor);

// 比如批量修改所有编辑器的内容
editorInstances.forEach(editor => {
  editor.setValue('// Updated code', -1);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:56:20