2011-12-04 6 views
23

cerco di impostare id4 nel seguente codice:Come posso impostare il valore di un editor CodeMirror da javascript?

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

Utilizzando questo comando javascript:

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

E questo comando:

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

Ma niente funziona.

AGGIORNAMENTO:

Il textarea è sostituito dal redattore CodeMirror. Come posso impostare un valore?

Grazie mille per l'aiuto!

risposta

41

Il modo per fare ciò è leggermente cambiato dal rilascio di 3.0. Ora è qualcosa di simile a questo:

var textArea = document.getElementById('myScript'); 
var editor = CodeMirror.fromTextArea(textArea); 
editor.getDoc().setValue('var msg = "Hi";'); 
+0

Che cos'è ** myScript **? – Avinash

+1

È l'ID dell'elemento HTML che si desidera trasformare in un editor CodeMirror. –

1

Il codice che dovrebbe funzionare. La spiegazione più probabile per non riuscire è che gli elementi non esistono nel momento in cui lo si esegue. Se è così le soluzioni sono a uno:

  • Spostare il JS così sembra dopo aver creato gli elementi (ad esempio, fino a poco prima </body>)
  • Ritardo esecuzione del JS finché non sono stati creati gli elementi (ad esempio mediante spostandolo a una funzione assegnata come gestore eventi onload)
+0

Essi esistono! Ma id4 è un potente editor, ma nel codice html esattamente quello che ho scritto. – Dmitry

+5

"Un editor potente"? Questo suggerisce che hai già eseguito qualche altro JS che ha sostituito la textarea con un widget grafico. In tal caso, è necessario leggere la documentazione dell'API per quel widget per scoprire come modificarne il valore in modo programmatico. (Ciò evidenzia l'importanza di fornire un caso di test ridotto che mostri effettivamente il problema). – Quentin

+0

Come stai controllando che questo script non funzioni? Hai controllato l'effetto visivo o verificato il nuovo valore di textarea? –

6

Mi piacciono gli esempi. Prova questo:

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

CodeMirror ~ 4.6.0 si può fare questo, a patto di avere un oggetto CodeMirror:

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