更新事件后添加多个文本区域
Multiple text-areas being added after an update event
我正在使用 codemirror 制作一个简单的代码编辑器。我正处于最后阶段,但出现了一个错误,我无法理解。
我有一个 select
html 标签,其中包含三个选项:
<select class="language" id="lang" onclick="update()">
<option value="javascript">JavaScript</option>
<option value="python">Python</option>
<option value="python">C</option>
</select>
我的 update()
函数是:
function update() {
var select = $('#lang').val();
var editor = CodeMirror.fromTextArea($('#text'), {
mode: select,
theme: "blackboard",
});
}
update();
现在发生的情况是,每次我 select 从下拉列表中选择不同的选项时,都会在前一个代码编辑器下方添加一个新的代码编辑器。
您是否知道我的代码哪里出了问题以及我该如何解决?
将您的 JS 更改为:
let editor;
function update() {
var select = $('#lang').val();
editor = editor ?? CodeMirror.fromTextArea($('#text'), {
theme: "blackboard",
});
editor.setOption('mode', select);
}
update();
这使得如果 editor
已经存在,则不会再次创建它,而是 re-used.
我正在使用 codemirror 制作一个简单的代码编辑器。我正处于最后阶段,但出现了一个错误,我无法理解。
我有一个 select
html 标签,其中包含三个选项:
<select class="language" id="lang" onclick="update()">
<option value="javascript">JavaScript</option>
<option value="python">Python</option>
<option value="python">C</option>
</select>
我的 update()
函数是:
function update() {
var select = $('#lang').val();
var editor = CodeMirror.fromTextArea($('#text'), {
mode: select,
theme: "blackboard",
});
}
update();
现在发生的情况是,每次我 select 从下拉列表中选择不同的选项时,都会在前一个代码编辑器下方添加一个新的代码编辑器。
您是否知道我的代码哪里出了问题以及我该如何解决?
将您的 JS 更改为:
let editor;
function update() {
var select = $('#lang').val();
editor = editor ?? CodeMirror.fromTextArea($('#text'), {
theme: "blackboard",
});
editor.setOption('mode', select);
}
update();
这使得如果 editor
已经存在,则不会再次创建它,而是 re-used.