如何将document.getElementById转换为jquery?

时间:2018-11-28 13:45:02

标签: javascript jquery

我有一个简单的混合代码(jquery和javascript):

$(document).ready(function(){
        var mixedMode = {
          name: "htmlmixed",
          scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i,
                         mode: null},
                        {matches: /(text|application)\/(x-)?vb(a|script)/i,
                         mode: "vbscript"}]
        };
        var editor = CodeMirror.fromTextArea(document.getElementById("HTMLcodeMirror"), {
          mode: mixedMode,
          selectionPointer: true,
          theme: "eclipse"
        });

        var html = $('#HTMLcodeMirror').val();
        $('#html-output').html(html);
        $('.run-btn').click(function(){
          html = editor.getValue();
          $('#html-output').html(html);
          console.log('clicked');
          console.log(html);
        });
        console.log(html);
      });

这里我要转换var editor = CodeMirror.fromTextArea(document.getElementById("HTMLcodeMirror"), {如下:

var editor = CodeMirror.fromTextArea($("#HTMLcodeMirror"), {

我遇到以下错误:

Uncaught TypeError: textarea.getAttribute is not a function
    at Function.fromTextArea (codemirror.js?ver=1.0.0:9562)
    at HTMLDocument.<anonymous> (HTML.js?ver=1.1.4:9)
    at l (jquery-3.3.1.min.js?ver=3.1.1:2)
    at c (jquery-3.3.1.min.js?ver=3.1.1:2)

我的代码有什么问题?有想法吗?

1 个答案:

答案 0 :(得分:1)

fromTextarea()方法要求使用dom元素而不是jQuery对象。

您可以通过几种方式从$("#HTMLcodeMirror")获取底层dom元素

最简单的是$("#HTMLcodeMirror")[0]

也可以使用$("#HTMLcodeMirror").get(0)