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

问题描述 投票:0回答:7

我尝试在以下代码中设置

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 编辑器取代。我如何为其设置值?

非常感谢您的帮助!

javascript textarea codemirror
7个回答
77
投票

自 3.0 发布以来,执行此操作的方式略有变化。现在是这样的:

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

13
投票

我喜欢例子。试试这个:

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

11
投票

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

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

2
投票

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

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

1
投票

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

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

1
投票

var editor=CodeMirror.fromTextArea('textarea_id'); editor.setCode('your string');



0
投票

© www.soinside.com 2019 - 2024. All rights reserved.