2

大家好这是我的两个javascript代码。我想将第一个javascript中定义的变量访问到另一个脚本中。

1)

<script>
$(document).ready(function() 
{
    $('pre.codeguru').each(function() 
    {
            var pre = this;
            var form = $('form[name=sample]').clone();
            $(form).removeAttr('name');
            $(form).removeClass('hidden');
            $($(form).find('textarea')[0]).val($(pre).text());
            var id = $(pre).attr('id');
            $(form).find('div textarea[name=code]').first().attr('id', id);
        $(pre).replaceWith(form);
        });
        var editors = [];
        $('textarea[name=codeguru]').each(function() 
        {
            var editor = CodeMirror.fromTextArea(this, 
            {
                lineNumbers: true,
                matchBrackets: true,
                mode: "application/x-httpd-perl",
                tabMode: "shift"
             });
                editors.push(editor);
        });

});
</script>

2)

<script type="text/javascript">

    function execute() {
            p5pkg.CORE.print = function(List__) {
                var i;
                for (i = 0; i < List__.length; i++) {
                  document.getElementById('print-result').value += p5str(List__[i])
                }
                return true;
            };
            p5pkg["main"]["v_^O"] = "browser";
            p5pkg["main"]["Hash_INC"]["Perlito5/strict.pm"] = "Perlito5/strict.pm";
            p5pkg["main"]["Hash_INC"]["Perlito5/warnings.pm"] = "Perlito5/warnings.pm";
            var source = editor.getValue();
            alert(source);
            var pos = 0;
            var ast;
            var match;
            document.getElementById('print-result').value = "";
            try {
                var start = new Date().getTime();
                var js_source = p5pkg["Perlito5"].compile_p5_to_js([source]);
                var end = new Date().getTime();
                var time = end - start;
                // run
                start = new Date().getTime();
                eval(js_source);
                end = new Date().getTime();
                time = end - start;
            }
            catch(err) {
                //document.getElementById('log-result').value += "Error:\n";
                  }
        }
    </script>

现在我的问题是我想访问在第一个 javascript 中定义的编辑器

var editors = [];
        $('textarea[name=codeguru]').each(function() 
        {
            var editor = CodeMirror.fromTextArea(this, 
            {
                lineNumbers: true,
                matchBrackets: true,
                mode: "application/x-httpd-perl",
                tabMode: "shift"
             });
                editors.push(editor);
        });

在第二个 JavaScript 中。任何人都有这个答案然后请帮我这样做

4

3 回答 3

2

如果在定义变量时省略 var,它们将是全局可访问的。

所以

前=这个;

代替

var pre = this;

将使 pre 可以从每个功能中访问。

于 2013-07-09T08:05:25.933 回答
0

我能想到的唯一方法是将变量作为变量传递给其他函数

function otherJavaFile.myFunction (myVariable);

或更改 HTML 中的变量,即自定义数据值,然后其他脚本可以访问它。我不喜欢全局变量。

// Sheet 1
$("#myDiv").attr("data-variable",yourValue);

// Sheet 2
 var secondVariable = $("#myDiv").attr("data-variable");
于 2013-07-09T08:08:44.330 回答
0

伙计,我对 jquery 不满意...
我希望您期待同一文档上的 iframe/框架[窗口共享]。根据我对 Javascript DOM 的了解,可以访问在另一个文档中的一个文档中定义的变量。您必须按照 DOM 2 使用 document.importNode(original Node as in other document,boolean) 方法
。对 javacript 代码执行类似的操作。 ..
documentI(此处存在的原始变量/节点)- iframe.contentDocument.getElementsByTagName(/节点的标签名称/)...
documentII(此处要克隆的节点)- document.importNode(originalNode,True)

我希望这有效

于 2013-07-09T08:14:19.260 回答