Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数问题_Javascript_Proj4js - Fatal编程技术网

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('

在我的主网页(Viewer.aspx)中,我有一个如下的javascript脚本标记

<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)的代码在哪里?在我的第一篇文章中,这就是我所拥有的。我在第二个脚本标签中加入了您和其他人建议的附加代码,但仅此而已,这不可能是正确的,因为