Javascript Codemirror可以';t使用变量获取或设置值

Javascript Codemirror可以';t使用变量获取或设置值,javascript,jquery,codemirror,Javascript,Jquery,Codemirror,大家好,我正在使用Codemirror编辑器,并在html textarea标记中添加了一个标准代码,然后我在jQuery中创建了Codemirror元素,但当我想从外部使用setValue或getValue设置元素值时,该值不起作用,因为我将Codemirror定义为的变量未定义。我发现的唯一解决方法是使用codemirror的change实例将codemirror实例保存到全局变量,但是问题出现了,如何在创建时触发change方法?如果codemirror指定的变量不被未定义,那么更好的方法

大家好,我正在使用Codemirror编辑器,并在html textarea标记中添加了一个标准代码,然后我在jQuery中创建了Codemirror元素,但当我想从外部使用setValue或getValue设置元素值时,该值不起作用,因为我将Codemirror定义为的变量未定义。我发现的唯一解决方法是使用codemirror的change实例将codemirror实例保存到全局变量,但是问题出现了,如何在创建时触发change方法?如果codemirror指定的变量不被未定义,那么更好的方法是什么

<textarea name="mediaopt" rows="8" cols="80">/*===== MEDIA OPTIMIZATION =====*/
</textarea>

在这种情况下,editor2始终是未定义的编辑器change函数中的编辑器是codemirror实例,它仅在触发change方法后才起作用,因此globaleditor是未定义的,直到我要更改的更改:)

我建议用唯一的id/类将每个文本区域包装在一个div中。通过这种方式,您可以指定希望拥有更改事件的codemirror实例

.CodeMirror
类中使用change,我更喜欢使用
keyup

可以在初始化编辑器后直接设置变量

var editor2 = CodeMirror.fromTextArea($('textarea[name="mediaopt"]')[0], {
    lineNumbers: true,
    lineWrapping: true,
    smartIndent: true,
    mode: "text/css",
    extraKeys: {"Shift-Space": "autocomplete"},
    autoCloseBrackets: true,
    matchBrackets: true,
    closeTags: true,
    theme: "monokai",
}
var cssmediaopt = editor.getValue();
var globaleditor = editor;

$(document).on('change', '.Editor_2 .CodeMirror', function() {
    cssmediaopt = editor.getValue();
    globaleditor = editor;
});

非常感谢你!它起作用了!我真的不知道有什么区别,但现在它工作得很好!有一件事是,编辑必须改为editor2,反之亦然。@JulianB。因为您的目标是编辑器对象,而不是
.codemirr
元素
var editor2 = CodeMirror.fromTextArea($('textarea[name="mediaopt"]')[0], {
    lineNumbers: true,
    lineWrapping: true,
    smartIndent: true,
    mode: "text/css",
    extraKeys: {"Shift-Space": "autocomplete"},
    autoCloseBrackets: true,
    matchBrackets: true,
    closeTags: true,
    theme: "monokai",
}
var cssmediaopt = editor.getValue();
var globaleditor = editor;

$(document).on('change', '.Editor_2 .CodeMirror', function() {
    cssmediaopt = editor.getValue();
    globaleditor = editor;
});