在我的主网页(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所说的 - 您需要将第二个脚本块变成这样的东西:

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

...但是您真的应该移动内联代码块(第二个内部的内部块 <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"
{

}

如果您要运行第二个JavaScript片段,那将行不通,因为您在声明它之前调用功能。

*脚注:实际上并非如此,因为使用此语法(function foo() { ... })在JavaScript中做一些特殊和神奇的事情。我的特定示例实际上会起作用,但它说明了您遇到的问题。

其他提示

是的,这是定期进行的,因为可以将JavaScript函数放入其他文件中并将其拉入以这种方式工作的页面。

您的第二个脚本标签指定 src. 。 .js文件的内容将加载和解析,但是脚本标签中的代码(the mouseMove 功能)将被忽略。如果您同时需要.js文件的功能和内容,则需要将它们分为两个不同的脚本标签。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top