web-dev-qa-db-fra.com

Comment définir la valeur d'un éditeur CodeMirror à l'aide de Javascript?

J'essaie de définir 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 ça:

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

Mais rien ne fonctionne.

MIS À JOUR:

La textarea est remplacée par l'éditeur CodeMirror. Comment est-ce que je lui attribue une valeur?

Merci beaucoup pour l'aide!

27
Dmitry

La façon de procéder a légèrement changé depuis la publication de la version 3.0. C'est maintenant quelque chose comme ça:

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

J'aime les exemples. Essaye ça:

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

Vous pouvez faire cela avec CodeMirror ~ 4.6.0, en supposant que vous ayez un objet codemirror:

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

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

  • Déplacez le JS pour qu'il apparaisse après la création des éléments (par exemple, juste avant </body>)
  • Retarder l'exécution du JS jusqu'à la création des éléments (par exemple, en le déplaçant vers une fonction que vous affectez en tant que gestionnaire d'événements onload)
1
Quentin