编程语言
首页 > 编程语言> > 访问在不同文件中定义的javascript函数

访问在不同文件中定义的javascript函数

作者:互联网

我有两个看似相关的问题,访问在不同的地方定义的javascript函数.我遇到的第一个问题是调用我在firgbug或safari控制台中定义的函数.我定义了一个名为getRed的函数,如下所示:

    function getRed(row, col)
    {
           // do something stuff and return the red value as a float
    }

我希望能够从控制台测试这个功能,但每次我尝试调用getRed(1,1);例如,我收到如下错误:ReferenceError:未定义getRed

我是否需要进行特殊调用来定义命名空间?我在一个名为drawing.js的javascript文件中定义了这个函数,它在我的html页面中很早就定义了.

我遇到的另一个问题是从我的dojo调色板的onChange:方法调用同一个drawing.js文件中定义的函数.以下是调色板的代码:

<script type="text/javascript" src="drawing.js"></script>
 //the method colorChange is inside drawing.js which is defined before the dojo 
 //color palette
 <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"
djConfig="parseOnLoad: true">
</script>
<script type="text/javascript">
        dojo.require("dojox.widget.ColorPicker");
        dojo.addOnLoad(function() {
            var c = new dojox.widget.ColorPicker({
                onChange: function(val)
                {
                    console.log("BEFORE");
                    colorChange(val);
                    console.log("AFTER");
                }
            },
            "picker1");
        });
    </script>

以下是文件drawing.js中changeColor的定义:

    function colorChange(val)
{
    console("colorChange!");
}

每次我点击调色板时都会出现以下错误:ReferenceError:colorChange未定义.

我是javascript的新手,我确信这两个问题有一个非常相似和简单的解决方案,但我无法在线找到答案.谁能帮我吗?

我很确定脚本正在加载,因为此屏幕截图显示:

解决方法:

控制台与您的页面处于同一全局范围.由于getRed()和colorChange()都是在drawing.js中定义的,并且都不能在全局范围内找到,我怀疑drawing.js没有被正确包含.

要检查是否实际包含drawing.js(即,您的文件路径正确),请转到Firebug的“脚本”选项卡.它将列出当前页面上包含的所有脚本.

标签:javascript,callback,dojo,color-palette
来源: https://codeday.me/bug/20190630/1339571.html