Estoy haciendo un editor de código simple usando codemirror. Estoy en la última etapa, pero ha ocurrido un error que no puedo entender.
Tengo una etiqueta html select con tres opciones:
<select class="language" id="lang" onclick="update()"> <option value="javascript">JavaScript</option> <option value="python">Python</option> <option value="python">C</option> </select> Y mi función update() es:
function update() { var select = $('#lang').val(); var editor = CodeMirror.fromTextArea($('#text'), { mode: select, theme: "blackboard", }); } update();Ahora lo que sucede es que cada vez que selecciono una opción diferente del menú desplegable, se agrega un nuevo editor de código debajo del anterior.
¿Tiene alguna idea de dónde me estoy equivocando en el código y cómo puedo solucionarlo?
Cambia tu JS a esto:
let editor; function update() { var select = $('#lang').val(); editor = editor ?? CodeMirror.fromTextArea($('#text'), { theme: "blackboard", }); editor.setOption('mode', select); } update(); Esto hace que si el editor ya existe, no se cree de nuevo, sino que se reutilice.