異なる場所で定義された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つの問題は非常に似通った簡単な解決策があると確信していますが、回答をオンラインで見つけることができませんでした。誰か助けてくれますか?
私はこのスクリーンショットに示すように、スクリプトがロードされているかなり確信している:かどうかを確認し、
drawing.jsはクラスを実装していますか?私の推測では、 'colorChange'はクラス内で定義されているため、グローバルスコープ内にはありません。 – Dexter
私は同じ結論になって、関数がdrawings.jsで字下げされている様子を見てきました。あなたはfoo.colorChange()のようなものではないと確信していますか? – herostwist