Var没有定义,但为什么?

时间:2010-08-05 06:14:03

标签: javascript undefined

我对Codemirror(http://codemirror.net/manual.html

有一点问题

我的代码

$(document).ready(function ust()
    {    
        pa_textareas();

    });


    function pa_textareas()
    {
            var textarea = document.getElementById('ta_1');
          var editor_1 = new MirrorFrame(CodeMirror.replace(textarea), {
            height: "100%",
            width: "100%",                
            parserfile: ["tokenizejavascript.js", "parsejavascript.js"],
            stylesheet: "js/js_parser/jscolors.css",
            path: "js/js_parser/",
            autoMatchParens: false,
            content: 'test kjskljsklj skjs lkj slkj sl',
            initCallback: function(getContents) { e1_ct  = ''+editor_1.mirror.getCode()+''; },
            onChange: function (n) { e1_ct = ''+editor_1.mirror.getCode()+''; }
          });

          var textarea = document.getElementById('ta_2');
          var editor_2 = new MirrorFrame(CodeMirror.replace(textarea), {
            height: "100%",
            width: "100%",                
            parserfile: ["tokenizejavascript.js", "parsecss.js"],
            stylesheet: "js/js_parser/csscolors.css",
            path: "js/js_parser/",
            autoMatchParens: false,
            content: 'blub kasjdkljas dkjas lkdj alskj dlk',
            initCallback: function(getContents) { e2_ct  = ''+editor_2.mirror.getCode()+''; },
            onChange: function (n) { e2_ct = ''+editor_2.mirror.getCode()+''; }
          });

    }

我想插入一个格式化代码的按钮,但我总是出错。

按钮: 的onclick = “editor_2.mirror.reindent();”

结果: - > “editor_2未定义”

THX 彼得:)

编辑:代码已修复

3 个答案:

答案 0 :(得分:2)

因为您的代码中没有任何一点可以为editor_code_2分配值,但是您尝试使用它两次。

答案 1 :(得分:2)

editor_2的范围是函数pa_textareas。由于您使用内部事件处理程序属性调用它,因此无法访问该变量。

您应该在pa_textareas函数中使用JavaScript分配事件处理程序。

因为你正在使用jQuery(至少我假设你是,有其他库有愚蠢的$变量):

jQuery('some selector').click(function () { editor_2.mirror.reindent(); });

由于匿名函数是在pa_textareas内声明的,因此它可以访问该范围内定义的变量。

答案 2 :(得分:0)

我无法在代码中的任何位置找到名为editor_code_2的变量。这就是您收到错误的原因。您似乎拼错了editor_2变量。