Frage

In meiner Haupt-Webseite (Viewer.aspx) Ich habe einen Javascript-Skript-Tag wie diese

<script language="javascript" type="text/javascript">

function initialize() {
     var map = $find('Map1');           
     map.add_mouseMove(mouseMove);  

 }

</script>

Im Rahmen dieser Script-Tags habe ich eine Funktion. Ist es möglich, eine andere Funktion aufzurufen, die in einem anderen Skript-Tag so?

<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>
War es hilfreich?

Lösung

Wie pro Ihren Kommentar, hier ist was T. J. spreche - müssen Sie Ihren zweiten Script-Block in etwa wie folgt drehen:

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

... aber Sie sollten wirklich nur den Inline-Code-Block bewegen (was in meiner Antwort innerhalb des 2. <script> Tages ist) mit einer externen Javascript-Datei.


Bearbeiten 1: Was ist die Programmierung Hintergrund du herkommst? Wenn es so etwas wie C # oder Java, müssen Sie vergessen, was Sie über die kennen und nähern sich völlig anders Javascript. Javascript ist eine interpretierte Sprache, nicht eine kompilierte ein; unter anderem bedeutet dies, dass Angelegenheiten der Reihenfolge, in der Ihre Funktionen deklariert werden .

Als ich „Funktionsdeklaration“ sage, meine ich etwas, das aussieht wie folgt:

function myNewFunction()
{
   // anything else here
}

Dies teilt das Javascript-Interpreter über eine neue Funktion, genannt myNewFunction, deren Körper aus, was auch immer in den geschweiften Klammern ist.

Hier ist ein Beispiel dafür, was ich spreche, wenn ich sage, Sie eine Funktion verwenden, bevor Sie es deklariert haben. Betrachten Sie den folgenden Code-Block (isoliert von allen anderen Javascript, sagt, in einer externen Javascript-Datei):

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

Dies funktioniert wie erwartet, weil foo() erklärt wurde, bevor Sie es genannt. Was aber (es klingt wie) Sie zu tun versuchen ist analog dazu:

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

}

Wenn Sie den zweiten Javascript-Schnipsel laufen, wäre es nicht, weil Sie eine Funktion sind anruft, bevor sie deklariert wurde. *

* Fußnote: das ist nicht wirklich der Fall, weil mit dieser Syntax (function foo() { ... }) tut etwas Besonderes und magisch in Javascript. Mein besonderes Beispiel auch tatsächlich funktionieren, aber es zeigt das Problem Sie haben.

Andere Tipps

Ja, das ist ziemlich regelmäßig getan als Javascript-Funktionen können in andere Dateien und zogen in Seiten, die auf diese Weise arbeiten gestellt werden.

Ihr zweiter Skript-Tag gibt einen src. Der Inhalt der Js-Datei geladen und analysiert werden, aber der Code innerhalb des script-Tages (die mouseMove-Funktion) wird ignoriert. Wenn Sie sowohl die Funktion und den Inhalt der JS-Datei möchten, müssen Sie sie in zwei verschiedene Script-Tags trennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top