質問
私のメインWebページ(viewer.aspx)には、このようなJavaScriptスクリプトタグがあります
<script language="javascript" type="text/javascript">
function initialize() {
var map = $find('Map1');
map.add_mouseMove(mouseMove);
}
</script>
これらのスクリプトタグ内には、機能があります。このような別のスクリプトタグにある別の関数を呼び出すことは可能ですか?
<script language="javascript" type="text/javascript" src="Resources/JavaScript/proj4js-combined.js">
function mouseMove(sender,eventArgs) {
var source = new Proj4js.Proj('EPSG:3116');
var dest = new Proj4js.Proj('WGS84');
var p = new Proj4js.Point(px, py);
Proj4js.transform(source, dest, p);
}
</script>
解決
コメントによると、TJが話していたことは次のとおりです。2番目のスクリプトブロックを次のようなものに変える必要があります。
<script type="application/javascript" src="Resources/JavaScript/proj4js-combined.js"></script>
<script type="application/javascript">
function mouseMove(sender,eventArgs) {
var source = new Proj4js.Proj('EPSG:3116');
var dest = new Proj4js.Proj('WGS84');
var p = new Proj4js.Point(px, py);
Proj4js.transform(source, dest, p);
}
</script>
...しかし、実際にインラインコードブロックを移動する必要があります(2番目の内部は何ですか <script>
私の回答のタグ)外部JavaScriptファイルに。
編集1: あなたが来ているプログラミングの背景は何ですか? C#やJavaのようなものである場合、それらについて知っていることを忘れて、JavaScriptに完全に異なってアプローチする必要があります。 JavaScriptは解釈された言語であり、コンパイルされた言語ではありません。とりわけ、これはそれを意味します あなたの機能が宣言されている順序は問題である.
「関数宣言」と言うとき、私は次のようなものを意味します:
function myNewFunction()
{
// anything else here
}
これは、JavaScriptの通訳者に、呼ばれる新しい関数について伝えます myNewFunction
, 、その体は巻き毛の中にあるもので構成されています。
あなたがそれを宣言する前にあなたが関数を使用していると私が言うとき、私が話していることの例は次のとおりです。次のコードブロックを検討してください(他のJavaScriptからの単独で、たとえば外部JavaScriptファイルで):
function foo() // this line declares the function called "foo"
{
}
function bar() // this line declares the function called "bar"
{
foo(); // this line invokes the previously declared function called "foo"
}
これは、予想どおりに機能します foo()
あなたがそれを呼ぶ前に宣言されました。しかし、あなたがやろうとしていること(それは聞こえます)はこれに類似しています:
function foo() // this line declares the function called "foo"
{
bar(); // this line tries to invoke the function called "bar"
// but it hasn't been declared yet! so it's undefined
}
function bar() // this line declares the function called "bar"
{
}
この2番目のJavaScriptスニペットを実行する場合、宣言される前に関数を呼び出しているため、機能しません。*
*脚注:この構文を使用するため、これは実際にはそうではありません。function foo() { ... }
)JavaScriptで特別で魔法のようなことをします。私の特定の例は実際に機能しますが、それはあなたが抱えている問題を示しています。
他のヒント
はい、これは非常に定期的に行われます。JavaScript関数は他のファイルに配置し、この方法で機能するページに引っ張ることができます。
2番目のスクリプトタグはaを指定します src
. 。 .jsファイルの内容はロードされて解析されますが、スクリプトタグ内のコード( mouseMove
関数)は無視されます。 .jsファイルの関数と内容の両方が必要な場合は、2つの異なるスクリプトタグに分離する必要があります。