ti-enxame.com

Como posso definir o valor de um editor CodeMirror usando JavaScript?

Eu tento set id4 no seguinte código:

<div id="id1">
    <div id="id2">
        <div id="id3">
            <textarea id="id4"></textarea>
        </div>
    </div>
</div>

Usando este código:

document.getElementById('id4').value = "...";

E isto:

document.getElementById('id3').getElementsByTagName('textarea')[0].value = "...";

Mas nada funciona.

ATUALIZADA:

O textarea é substituído pelo editor CodeMirror. Como faço para definir valor para isso?

Muito obrigado pela ajuda!

27
Dmitry

A maneira de fazer isso mudou um pouco desde o lançamento do 3.0. Agora é algo assim:

var textArea = document.getElementById('myScript');
var editor = CodeMirror.fromTextArea(textArea);
editor.getDoc().setValue('var msg = "Hi";');
46
Ken Smith

Eu gosto de exemplos. Tente isto:

CodeMirror.fromTextArea(document.getElementById(id), {
        lineNumbers: true
    }).setValue("your code here");
8
Mariz Melo

CodeMirror ~ 4.6.0 você pode fazer isso, supondo que você tenha um objeto codemirror:

var currentValue = myCodeMirrorObject.cm.getValue();
var str = 'some new value';
myCodeMirrorObject.cm.setValue(str);
2
lfender6445

O código que você tem deve funcionar. A explicação mais provável para isso é que os elementos não existem no momento em que você o executa . Se assim for, as soluções são para:

  • Mova o JS para que ele apareça depois que os elementos forem criados (por exemplo, antes de </body>)
  • Atrase a execução do JS até que os elementos tenham sido criados (por exemplo, movendo-o para uma função atribuída como o manipulador de eventos onload)
1
Quentin