我有两个看似相关的问题,访问在不同地方定义的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的新手,我确信这两个问题有一个非常相似和简单的解决方案,但我无法在线找到答案。谁能帮我吗?
我很确定正在加载脚本,因为此屏幕截图显示:
答案 0 :(得分:3)
控制台与您的网页位于同一全局范围内。由于getRed()
和colorChange()
都在drawing.js中定义,并且都不能在全局范围内找到,我怀疑drawing.js没有被正确包含。</ p>
要检查是否实际包含了drawing.js(即您的文件路径正确),请转到Firebug的“脚本”选项卡。它将列出当前页面上包含的所有脚本。
答案 1 :(得分:0)
无需额外配置,您只需要确保包含drawing.js,检查文件路径是否正确。如果正确的话,调用应该没有问题。
只需检查您的js位置是否真实,如果您的js文件位于root中,只需在位置前添加斜杠,以便始终从www.example.com/drawing.js加载它将属性language =“javascript”添加到您的&lt; script ....
我希望这会有所帮助。