4

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

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

我希望能够从控制台测试此功能,但每次我尝试调用 getRed(1,1); 例如,我收到这样的错误:ReferenceError: getRed is not defined

我是否需要进行特殊调用来定义命名空间?我在一个名为 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 is not defined。

我对 javascript 很陌生,我确信这两个问题有一个非常相似且简单的解决方案,但我无法在网上找到答案。谁能帮我吗?

我很确定脚本正在加载,因为此屏幕截图显示: 在此处输入图像描述

4

2 回答 2

3

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

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

于 2011-04-04T21:07:05.610 回答
0

不需要额外的配置,你只需要确保你的drawing.js被包含,检查文件的路径是否正确。如果正确,则调用应该没有问题。

只需检查您的 js 位置是否真实,如果您的 js 文件位于根目录中,只需在位置前面添加斜杠,这样它就会始终从 www.example.com/drawing.js 加载它 将属性 language="javascript" 添加到您的 <script 。 ...

我希望这有帮助。

于 2011-04-04T20:53:21.217 回答