2011-04-04 29 views
4

異なる場所で定義されたjavascript関数にアクセスする際に、2つの一見関連した問題が発生しています。私が最初に抱える問題は、firgbugまたはsafariのコンソールから定義した関数を呼び出すことです。私はこのようになりますgetRedと呼ばれる関数定義された:私は、コンソールからこの機能をテストできるようにしたいが、私は試してみてgetRed(1,1)を呼び出すたびになり異なるファイルで定義されたjavascript関数へのアクセス

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

を。たとえば、次のようなエラーが発生します。ReferenceError:getRedが定義されていません

名前空間を定義するために特別な呼び出しを行う必要がありますか?私はこの機能を、HTMLページの非常に早い段階で定義されている、drawing.jsというjavascriptファイルで定義します。

他の問題は、私の道場カラーパレットの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の新機能です。これらの2つの問題は非常に似通った簡単な解決策があると確信していますが、回答をオンラインで見つけることができませんでした。誰か助けてくれますか?

私はこのスクリーンショットに示すように、スクリプトがロードされているかなり確信している:かどうかを確認し、 enter image description here

+0

drawing.jsはクラスを実装していますか?私の推測では、 'colorChange'はクラス内で定義されているため、グローバルスコープ内にはありません。 – Dexter

+0

私は同じ結論になって、関数がdrawings.jsで字下げされている様子を見てきました。あなたはfoo.colorChange()のようなものではないと確信していますか? – herostwist

答えて

3

コンソールは、自分のページと同じグローバルスコープにあります。 getRed()colorChange()はどちらもdrawing.jsで定義されており、いずれもグローバルスコープ内に存在しないため、drawing.jsが適切に組み込まれていない可能性があります。

実際にdrawing.jsが含まれているかどうか(つまりファイルパスが正しいかどうか)を確認するには、Firebugの[スクリプト]タブに移動します。現在のページに含まれるすべてのスクリプトを一覧表示します。

+1

私はコンソールで定義された関数を呼び出そうとしていません。私はコンソールからjavascript srcファイルで定義された関数を呼び出そうとしています。 – Mike2012

+1

また、スクリプトがロードされたようです(これを示すスクリーンショットを追加したばかりです)。 – Mike2012

+3

Hmm ..私はdrawing.jsで定義されたgetRed()で正確なスクリプトタグを使用して簡単なモックアップを作成し、それは動作します。 drawing.jsで定義されている他の関数は未定義ですか?あるいは、これらの2つの機能は別の機能で定義されていますか? –

0

を追加設定の必要はあなたが必要とするすべてはあなたのdrawing.jsが含まれていることを確認することです、ありませんファイルへのパスが正しいです。呼び出しに問題がないはずです。

jsファイルがルートにある場合は、jsファイルが実際に存在するかどうかを確認するだけです。スワッシュを場所の前に追加すると、常にwww.example.com/drawing.jsから読み込まれます。属性言語= "javascript" <スクリプト....

私はこれが役に立ちそうです。

+0

Thatsのstrange、drawing.jsは、小さなキャンバスベースの2Dピクセルエディタのすべての関数とイベントハンドリングを定義していますが、そのすべてが機能しますが、コールバックやコンソールから関数を呼び出すことはできません。 drawing.jsは私のHTMLファイルと同じ場所にありますので、src = "drawing.js"は正しいはずです。 – Mike2012

関連する問題