2011-12-04 16 views
23

intento configurar id4 en el siguiente código:¿Cómo puedo establecer el valor de un editor CodeMirror mediante javascript?

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

Mediante el uso de este comando javascript:

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

Y este comando:

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

Pero nada funciona.

ACTUALIZADO:

El textarea se sustituye por el editor CodeMirror. ¿Cómo le pongo valor?

¡Muchas gracias por la ayuda!

Respuesta

41

La manera de hacer esto ha cambiado levemente desde el lanzamiento de 3.0. Es ahora algo como esto:

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

¿Qué es ** myScript **? – Avinash

+1

Es el ID del elemento HTML que desea convertir en un editor CodeMirror. –

1

El código que tiene debe funcionar. La explicación más probable para que falle es que los elementos no existen en el momento en que lo ejecuta. Si es así, las soluciones son a cualquiera:

  • Mover la JS por lo que aparece una vez que se han creado los elementos (por ejemplo, justo antes de </body>)
  • Retrasar la ejecución de la JS hasta que se hayan creado los elementos (por ejemplo, por moviéndolo a una función que asigna como el controlador de eventos onload)
+0

Existen! Pero id4 es un poderoso editor, pero en el código html exactamente lo que escribí. – Dmitry

+5

"Un editor potente"? Eso sugiere que ya ha ejecutado algunos otros JS que han reemplazado el área de texto con algún widget gráfico. Si es así, debe leer la documentación de la API para ese widget para averiguar cómo cambiar su valor programáticamente. (Esto resalta la importancia de proporcionar un caso de prueba reducido que realmente demuestre el problema). – Quentin

+0

¿Cómo se asegura de que este script no funcione? ¿Revisó el efecto visual o verificó el valor de la nueva área de texto? –

6

Me gustan los ejemplos. Intente esto:

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

CodeMirror ~ 4.6.0 se puede hacer esto, suponiendo que tiene un objeto CodeMirror:

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