Pregunta

En mi principal Página Web (Viewer.aspx) tengo una etiqueta de script javascript como esto

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

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

 }

</script>

Dentro de esas etiquetas script Tengo una función. ¿Es posible llamar a otra función que se encuentra en una etiqueta de script diferente como este?

<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>
¿Fue útil?

Solución

De acuerdo con su comentario, esto es lo que T. J. estaba hablando - que necesita para convertir su segundo bloque de script en algo como esto:

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

... pero realmente debería simplemente mover el bloque de código en línea (lo que hay dentro de la etiqueta de segunda <script> en mi respuesta) a un archivo JavaScript externo.


Editar 1: ¿Cuál es el fondo de programación que está viniendo? Si es algo como C # o Java, tendrá que olvidar lo que sabe sobre esos y acercarse Javascript completamente diferente. Javascript es un lenguaje interpretado, no es un compilado; entre otras cosas, esto significa que el orden en que sus funciones se declaran asuntos .

Cuando digo "declaración de la función," Yo nada significan que es similar al siguiente:

function myNewFunction()
{
   // anything else here
}

Esto le dice al intérprete de Javascript de una nueva función, llamada myNewFunction, cuyo cuerpo se compone de lo que está en las llaves.

Este es un ejemplo de lo que estoy hablando cuando digo que está utilizando una función antes de que haya declarado. Considere el siguiente bloque de código (al margen de cualquier otra Javascript, por ejemplo, en un archivo JavaScript externo):

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

Este trabajo como se esperaba, debido a foo() fue declarado antes llamado. Sin embargo, lo que (como suena) que está tratando de hacer es análoga a esto:

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

}

Si se va a ejecutar este segundo fragmento de código JavaScript, que no funcionaría, ya que está llamando a una función antes de que fuera declarado. *

* Nota: esto no es realmente el caso, porque el uso de esta sintaxis (function foo() { ... }) hace algo especial y mágico en Javascript. Mi ejemplo particular funcione de verdad, pero ilustra el problema que está teniendo.

Otros consejos

Sí, esto se hace con bastante regularidad como funciones Javascript se pueden poner en otros archivos y metieron en páginas que funcionan de esta manera.

Su segunda etiqueta script especifica un src. El contenido del archivo .js serán cargados y analizados, pero el código dentro de la etiqueta de la escritura (la función mouseMove) serán ignorados. Si desea que la función y el contenido del archivo .js, es necesario separarlos en dos diferentes etiquetas de script.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top