40

我尝试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 = "...";

但没有任何效果。

更新:

textareaCodeMirror 编辑器取代。我如何设置它的价值?

非常感谢您的帮助!

4

6 回答 6

71

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

var textArea = document.getElementById('myScript');
var editor = CodeMirror.fromTextArea(textArea);
editor.getDoc().setValue('var msg = "Hi";');
于 2014-01-10T22:05:14.617 回答
13

我喜欢例子。试试这个:

CodeMirror.fromTextArea(document.getElementById(id), {
        lineNumbers: true
    }).setValue("your code here");
于 2012-05-23T08:10:31.910 回答
5

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

document.querySelector('.CodeMirror').CodeMirror.setValue('VALUE')
于 2020-07-03T08:42:26.967 回答
2

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

var currentValue = myCodeMirrorObject.cm.getValue();
var str = 'some new value';
myCodeMirrorObject.cm.setValue(str);
于 2015-04-04T23:09:19.250 回答
1

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

  • 移动 JS,使其在元素创建之后出现(例如,就在之前</body>
  • 延迟 JS 的执行,直到元素被创建(例如,通过将其移动到您指定为onload事件处理程序的函数)
于 2011-12-04T21:22:47.887 回答
1

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

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

editor.setCode('your string');
于 2019-10-05T16:18:09.423 回答