Domanda

Nel mio principale pagina Web (Viewer.aspx) ho un tag script javascript come questo

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

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

 }

</script>

Nell'ambito di questi tag script Ho una funzione. E 'possibile chiamare un'altra funzione che è in un tag diverso script come questo?

<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>
È stato utile?

Soluzione

Come per il tuo commento, ecco cosa T.J. stava parlando - è necessario per trasformare il vostro secondo blocco di script in qualcosa di simile a questo:

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

... ma si dovrebbe davvero basta spostare il blocco di codice inline (cosa c'è dentro del tag 2 ° <script> nella mia risposta) per un file JavaScript esterno.


Modifica 1: Qual è il background di programmazione si sta venendo da? Se si tratta di qualcosa di simile a C # o Java, avrete bisogno di dimenticare ciò che sai di quelle e avvicina Javascript in modo completamente diverso. Javascript è un linguaggio interpretato, non quelli compilati; tra le altre cose, questo significa che l'ordine in cui le funzioni sono dichiarate questioni .

Quando dico "dichiarazione di funzione," intendo tutto ciò che assomiglia a questo:

function myNewFunction()
{
   // anything else here
}

Questo dice l'interprete JavaScript di una nuova funzione, chiamata myNewFunction, il cui corpo è costituito da tutto ciò che è nelle parentesi graffe.

Ecco un esempio di cosa sto parlando quando dico che si sta utilizzando una funzione prima di aver dichiarato. Si consideri il seguente blocco di codice (in modo isolato da qualsiasi altro Javascript, per esempio, in un file JavaScript esterno):

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

Questo lavoro come previsto, a causa foo() è stato dichiarato prima chiamato. Tuttavia, ciò che (suona come) si sta cercando di fare è analogo a questo:

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

}

Se si dovesse eseguire questo secondo frammento di codice Javascript, sarebbe senza lavoro, perché si sta chiamando una funzione prima che fosse dichiarata. *

* Nota: questo non è effettivamente il caso, perché l'utilizzo di questa sintassi (function foo() { ... }) fa qualcosa di speciale e magico in Javascript. Il mio esempio particolare potrà mai funzionare, ma illustra il problema che stai avendo.

Altri suggerimenti

Sì, questo è fatto abbastanza regolarmente come funzioni Javascript possono essere messi in altri file e tirato in pagine che funzionano in questo modo.

Il tag secondo script specifica un src. Il contenuto del file .js saranno caricati ed elaborati, ma il codice all'interno del tag script (la funzione mouseMove) verranno ignorati. Se si desidera che sia la funzione e il contenuto del file .js, è necessario separarli in due diversi tag script.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top