如何在另一个javascript中的一个javascript中访问变量?

时间:2013-07-09 08:02:10

标签: javascript jquery

嗨大家这是我的两个javascript.i的代码想要访问第一个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中。 任何人都有这个答案然后请帮助我这样做

3 个答案:

答案 0 :(得分:2)

如果在定义变量时遗漏var,则可以全局访问。

所以

  

pre = this;

而不是

var pre = this;

会使每个功能都可以访问。

答案 1 :(得分:0)

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

function otherJavaFile.myFunction (myVariable);

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

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

// Sheet 2
 var secondVariable = $("#myDiv").attr("data-variable");

答案 2 :(得分:0)

哥们我对jquery感到不舒服...
我希望你期待同一个文档[窗口共享]上的iframes / frames。 基于我对Javascript DOM的了解,可以访问另一个文档中的一个文档中定义的变量。您必须按照DOM 2使用document.importNode(原始节点,如其他文档,boolean)方法。
为javacript代码执行类似的操作...
documentI(此处提供的原始变量/节点) - iframe.contentDocument.getElementsByTagName(/ Node的名称/)...

documentII(要在此克隆的节点) - document.importNode(originalNode,真)

我希望这有效