Javascript 函数问题
在我的主网页(Viewer.aspx)中,我有一个如下的javascript脚本标记Javascript 函数问题,javascript,proj4js,Javascript,Proj4js,在我的主网页(Viewer.aspx)中,我有一个如下的javascript脚本标记 <script language="javascript" type="text/javascript"> function initialize() { var map = $find('Map1'); map.add_mouseMove(mouseMove); } </script> 函数初始化(){ 变量映射=$find('
<script language="javascript" type="text/javascript">
function initialize() {
var map = $find('Map1');
map.add_mouseMove(mouseMove);
}
</script>
函数初始化(){
变量映射=$find('Map1');
map.add_mouseMove(mouseMove);
}
在这些脚本标记中,我有一个函数。可以像这样调用另一个脚本标记中的函数吗
<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>
mouseMove函数(发送方、事件参数){
var source=new Proj4js.Proj('EPSG:3116');
var dest=新项目4js.Proj('WGS84');
var p=新项目点(px,py);
Proj4js.transform(源、目标、p);
}
是的,这是非常定期的,因为Javascript函数可以放入其他文件并拉入以这种方式工作的页面。是的,这是非常定期的,因为Javascript函数可以放入其他文件并拉入以这种方式工作的页面。您的第二个脚本标记指定一个src
。将加载并解析.js文件的内容,但将忽略脚本标记内的代码(mouseMove
函数)。如果您想要.js文件的函数和内容,则需要将它们分成两个不同的脚本标记。第二个脚本标记指定一个src
。将加载并解析.js文件的内容,但将忽略脚本标记内的代码(mouseMove
函数)。如果您想要.js文件的函数和内容,需要将它们分成两个不同的脚本标记。根据您的评论,T.J.所说的是-您需要将第二个脚本块转换为如下内容:
<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>
function myNewFunction()
{
// anything else here
}
这将告诉Javascript解释器一个名为myNewFunction
的新函数,其主体由花括号中的任何内容组成
这里有一个例子来说明我所说的,当我说你在声明一个函数之前正在使用它。考虑下面的代码块(与任何其他JavaScript隔离,例如,在一个外部JavaScript文件中):
这将按预期工作,因为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"
{
}
如果要运行第二个Javascript代码段,它将不起作用,因为您在声明函数之前调用了它*
*脚注:事实并非如此,因为使用这种语法(
function foo(){…}
)在Javascript中做了一些特殊而神奇的事情。我的特定示例实际上会起作用,但它说明了您遇到的问题。根据您的评论,以下是T.J.所说的内容-您需要将第二个脚本块转换为如下内容:
<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>
function myNewFunction()
{
// anything else here
}
这将告诉Javascript解释器一个名为myNewFunction
的新函数,其主体由花括号中的任何内容组成
这里有一个例子来说明我所说的,当我说你在声明一个函数之前正在使用它。考虑下面的代码块(与任何其他JavaScript隔离,例如,在一个外部JavaScript文件中):
这将按预期工作,因为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"
{
}
如果要运行第二个Javascript代码段,它将不起作用,因为您在声明函数之前调用了它*
*脚注:事实并非如此,因为使用这种语法(
function foo(){…}
)在Javascript中做了一些特殊而神奇的事情。我的特定示例实际上可以工作,但它说明了您遇到的问题。当然,它没有显示我试图显示的脚本标记。第一个脚本标记类似于script language=“javascript”type=“text/javascript”@Josh,我已经为您解决了这个问题。发布代码时,您需要单击二进制按钮,使其正确格式化。另外,您是否尝试过检查代码以查看其是否有效第二个类似于script language=“javascript”src=“Resources/javascript/proj4js combined.js”您的第二个标记似乎同时具有src
和内联内容,我认为大多数浏览器都无法处理。你可能需要单独的标签(但是是的,它们可以互相调用函数)。正如T.J.所说,绝对不要将脚本标签与src
和内联内容结合起来。这是非常糟糕的,如果你打算使用外部Javascript,你也可以在外部JS文件中包含所有(或尽可能多的)内容。当然,它没有显示我试图显示的脚本标记。第一个脚本标记类似于script language=“javascript”type=“text/javascript”@Josh,我已经为您解决了这个问题。发布代码时,您需要单击二进制按钮,使其正确格式化。另外,您是否尝试过检查代码以查看其是否有效第二个类似于script language=“javascript”src=“Resources/javascript/proj4js combined.js”您的第二个标记似乎同时具有src
和内联内容,我认为大多数浏览器都无法处理。你可能需要单独的标签(但是是的,它们可以互相调用函数)。正如T.J.所说,绝对不要将脚本标签与src
和内联内容结合起来。这真是太差劲了,如果你打算使用外部Javascript,那么最好将所有(或尽可能多的)外部JS文件都包含在内。这对我来说很有意义,谢谢。我仍然得到mouseMove是未定义的,所以我需要在map上做任何额外的操作。添加mouseMove(mouseMove)以使它跳转到该函数??听起来像是在调用map。在定义mouseMove
函数之前添加mouseMove(mouseMove)
。执行map.add_mouseMove(mouseMove)的代码在哪里?在我的第一篇文章中,这就是我所拥有的。我在第二个脚本标签中加入了您和其他人建议的附加代码,但仅此而已,这不可能是正确的,因为