CodeMirror - "未捕获TypeError:editor.getValue()不是函数"

时间:2018-02-21 17:59:57

标签: javascript codemirror

我对CodeMirror和JavaScript都比较新,所以我试着用它们来更好地了解它们。

我以前有代码,当我编辑/执行时,它工作并显示正确的输出。我执行时底部没有做任何事情,而当我在Chrome中检查时,它会显示标题中提到的错误。

尝试在这里更好地解释一下代码:

此作品

的index.html

<textarea id="editor" name="editor" style="display: none;">
Some code
</textarea>

...

var editor = CodeMirror.fromTextArea(document.getElementById('editor'), {
  lineNumbers: true,
  mode: 'text/html',
  autoCloseTags: true
});
executeCode();

executeCode()函数

function executeCode(){
        var text = editor.getValue();
        var ifr = document.createElement("iframe");
        ifr.setAttribute("frameborder", "0");
        ifr.setAttribute("id", "iframeOutput");  
        document.getElementById("iframewrapper").innerHTML = "";
        document.getElementById("iframewrapper").appendChild(ifr);
        var ifrw = (ifr.contentWindow) ? ifr.contentWindow : (ifr.contentDocument.document) ? ifr.contentDocument.document : ifr.contentDocument;
        ifrw.document.open();
        ifrw.document.write(text);
        ifrw.document.close();
    };

这不是

index.html(没有输入textarea的代码 - executeCode()是相同的)

$(function(){
    $.get('example.html',  function(data){
        $('textarea#editor').val(data);
        // now init codemirror
        var a = CodeMirror.fromTextArea(document.getElementById('editor'), {
            mode: 'text/html',
            tabMode: 'indent',
            lineNumbers: true,
            lineWrapping: true,
            autoCloseTags: true
        });
        executeCode();
    })
})

就像我说的那样,我是JS和CodeMirror的新手,所以很有可能它很简单,但是如果你能指出我在哪里,我会很感激。错了。

提前致谢!

1 个答案:

答案 0 :(得分:0)

因此,您面临的最可能的问题是,您在尝试使用CodeMirror 2方法检索编辑器内容时正在加载CodeMirror 1库。

CodeMirror 1使用getCode()method来检索编辑器的内容

var code = editor.getCode(); //a string with your editor content.

CodeMirror 2改用getValue()method

var code = editor.getValue(); //a string with your editor content.