我在訪問不同地方定義的javascript函數時有兩個看似相關的問題。我遇到的第一個問題是調用我從firgbug或safari控制檯定義的函數。我定義了一個名爲getRed看起來像這樣的功能:訪問在不同文件中定義的javascript函數
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很新,我相信這兩個問題有一個非常相似和簡單的解決方案,但我一直無法在網上找到答案。誰能幫我嗎?
我敢肯定腳本被加載這個屏幕截圖顯示:
Drawing.js是否實現了一個類?我的猜測是'colorChange'不在全局範圍內,因爲它是在一個類中定義的。 – Dexter 2011-04-04 21:32:39
我得出了同樣的結論,看着函數在drawing.js中縮進的方式。你確定它不是像foo.colorChange()? – herostwist 2011-04-04 21:48:50