如何获得Codemirror textarea的值


71

我正在使用Codemirror的textarea插件,但无法检索textarea的值。

码:

var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    matchBrackets: true,
    mode: "text/x-csrc"
  });


function showCode()
{
    var text = editor.mirror.getCode();
    alert(text);
}

它显示错误:

editor.getCode() is not a function.

1
是什么console.dir(editor.morror)以及console.dir(editor)在铬显示?
sissonb

Answers:


87

尝试使用getValue()代替getCode()

将可选参数传递到getValue(separator)中,以指定用于分隔行的字符串(默认为\n)。


1
有没有一种方法,而无需调用getValue()来获取对文本的引用?如果您在编辑器中有很多文本,此功能确实很慢,它将锁定UI线程。
古巴创

1
有没有之间的差异cm.getValue()cm.doc.getValue()
425nesp


4

使用your_editor_instance.getValue();

它将正常工作,因为getCode()CodeMirror中没有使用该名称命名的函数。

用于设置值 your_editor_instance.setValue();


1

我知道您正在使用,textarea但我希望这段代码对其他人有用!我有这个问题,但是有article标签,这是我用jquery获取所有代码的解决方案:

res_array = []
$.each($('article.code-draft span[role="presentation"]'), function(){
    res_array.push($(this).text())
});
console.log(res_array.join('\n'))

0

版本:5

根据文档,您现在需要这样做:

doc.getValue(?separator: string) → string

因此,在此示例中:

editor.getDoc().getValue("\n")

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.