Comment puis-je définir la valeur d'un éditeur CodeMirror en utilisant Javascript?

J'essaie de régler id4 dans le code suivant:

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

En utilisant ce code:

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

Et ceci:

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

Mais rien ne fonctionne.

Mise à jour:

Le textarea est remplacé par CodeMirror editor. Comment puis-je régler la valeur?

Merci beaucoup pour l'aide!

25
demandé sur DerpMarine 2011-12-05 01:19:39

4 réponses

La façon de le faire a légèrement changé depuis la sortie de 3.0. C'est maintenant quelque chose comme ceci:

var textArea = document.getElementById('myScript');
var editor = CodeMirror.fromTextArea(textArea);
editor.getDoc().setValue('var msg = "Hi";');
44
répondu Ken Smith 2014-01-10 22:05:14

J'aime les exemples. Essayez ceci:

CodeMirror.fromTextArea(document.getElementById(id), {
        lineNumbers: true
    }).setValue("your code here");
7
répondu Mariz Melo 2012-05-23 08:10:31

CodeMirror ~4.6.0 vous pouvez le faire, en supposant que vous avez un objet codemirror:

var currentValue = myCodeMirrorObject.cm.getValue();
var str = 'some new value';
myCodeMirrorObject.cm.setValue(str);
2
répondu lfender6445 2015-04-04 23:09:19

Le code que vous avez devrait fonctionner. L'explication la plus probable de cet échec est que les éléments n'existent pas au moment où vous l'exécutez. Si c'est le cas, les solutions sont soit:

  • déplacez le JS afin qu'il apparaisse après la création des éléments (par exemple juste avant </body>)
  • retardez l'exécution du JS jusqu'à ce que les éléments aient été créés (par exemple en le déplaçant vers une fonction que vous affectez comme gestionnaire d'événements onload)
1
répondu Quentin 2011-12-04 21:37:48