如何使用Javascript设置CodeMirror编辑器的值?

时间:2011-12-04 21:19:40

标签: javascript textarea codemirror

我尝试在以下代码中设置id4

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

使用此代码:

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

而且:

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

但没有任何作用。

更新:

textarea被CodeMirror编辑器取代。如何设置值呢?

非常感谢您的帮助!

6 个答案:

答案 0 :(得分:48)

自3.0发布以来,这样做的方式略有改变。它现在是这样的:

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

答案 1 :(得分:8)

我喜欢这个例子。试试这个:

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

答案 2 :(得分:2)

CodeMirror~4.6.0你可以这样做,假设你有一个codemirror对象:

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

答案 3 :(得分:2)

正如您所说,textarea被Codemirror代替。但是它被具有“ CodeMirror”类的元素替换。您可以使用querySelector来获取元素。当前的CodeMirror实例(及其方法)已附加到此元素。因此,您可以这样做:

document.querySelector('.CodeMirror').CodeMirror.setValue('VALUE')

答案 4 :(得分:1)

您拥有的代码应该有效。对它失败的最可能解释是,在运行它时元素不存在。如果是这样,解决方案是:

  • 移动JS,使其在创建元素后显示(例如,在</body>之前)
  • 延迟执行JS直到创建元素(例如,将其移动到您指定为onload事件处理程序的函数)

答案 5 :(得分:0)

这已经适用于我的(相当旧的)CodeMirror版本:

var editor=CodeMirror.fromTextArea('textarea_id');

editor.setCode('your string');