2011-04-04 58 views
4

我在訪問不同地方定義的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很新,我相信這兩個問題有一個非常相似和簡單的解決方案,但我一直無法在網上找到答案。誰能幫我嗎?

我敢肯定腳本被加載這個屏幕截圖顯示: enter image description here

+0

Drawing.js是否實現了一個類?我的猜測是'colorChange'不在全局範圍內,因爲它是在一個類中定義的。 – Dexter 2011-04-04 21:32:39

+0

我得出了同樣的結論,看着函數在drawing.js中縮進的方式。你確定它不是像foo.colorChange()? – herostwist 2011-04-04 21:48:50

回答

3

控制檯與您的頁面處於相同的全局範圍。由於getRed()colorChange()都在drawing.js中定義,並且都不能在全局範圍中找到,所以我懷疑drawing.js沒有被正確包含。

要檢查drawing.js實際上是否包含在內(即您的文件路徑正確),請轉到Firebug的「腳本」選項卡。它會列出當前頁面上包含的所有腳本。

+1

我不想調用控制檯中定義的函數。我試圖從控制檯調用一個javascript src文件中定義的函數。 – Mike2012 2011-04-04 21:09:51

+1

它也看起來像腳本已經加載(我剛剛添加了一個截圖顯示了這一點)。 – Mike2012 2011-04-04 21:19:56

+3

嗯..我用一個在drawing.js中定義的getRed()使用您的確切腳本標記創建了一個快速樣機,它可以工作。 drawing.js中定義的其他函數是否未定義?或者這兩個函數是否在另一個函數中定義? – 2011-04-04 21:30:08

0

無需額外配置,你需要的是確保你的drawing.js包括,檢查是否該文件的路徑是正確的。如果它的正確性與調用應該沒有問題。

只需檢查您的js位置是否真實,如果您的js文件位於根目錄中,則只需在位置前添加斜槓,以便始終從www.example.com/drawing.js中加載該屬性語言=「javascript」你的<腳本....

我希望這可以幫助。

+0

多數民衆贊成在奇怪的是,drawing.js定義了一個基於2d像素編輯器的小畫布的所有功能和事件處理,所有這些工作,但我仍然無法從回調或控制檯調用函數。 drawing.js與我的html文件位於同一位置,所以我認爲src =「drawing.js」應該是正確的。 – Mike2012 2011-04-04 21:08:18

相關問題