2011-04-26 23 views
10

¿cuál es la regla acerca de las funciones de llamada de un js a otro? Pensé que esto funcionaba, pero no estoy corriendo el problema (lo descubrí a través de Firefox) que una función en otro archivo js no parece reconocerse en mi primer archivo js.llame a un método de JavaScript en otro archivo .js

¿Hay alguna regla sobre el orden o algún truco que deba hacer para que funcione?

Respuesta

7

¿Está llamando a la función en un controlador de eventos, o inmediatamente cuando se carga el archivo javascript? Si no está en un controlador de eventos, entonces el orden de carga es importante. Si tiene dependencias circulares, es posible que deba retrasar parte de la inicialización con un oyente "DOM listo" o window.onLoad.

+0

así que si viene de un manejador de eventos, no necesito preocuparme ?? – leora

3

El navegador analiza los archivos javascript en el orden en que aparecen en el HTML. Entonces, si una función que se ejecuta en el primer archivo depende de una función que está en el segundo archivo, no funcionará. Si usa $ (función() {}); por ejemplo, con jQuery, se le ordena al javascript que espere hasta que se active el evento onload desde el objeto de la ventana. Esto garantiza que todos los elementos en la página se hayan cargado antes de la ejecución.

31

Tiene que ser accesible en cualquier parte del mundo. Por ejemplo:

// file1.js 
function hello() { 
    alert("Hello, world!"); 
} 
// file2.js 
$(function() { 
    hello(); 
}); 

probable es que tenga algo como esto:

// file1.js 
$(function() { 
    function hello() { 
     alert("Hello, world!"); 
    } 
    // ... 
}); 
// file2.js 
$(function() { 
    hello(); 
}); 

hello es sólo en el alcance del cierre define en file1.js. Por lo tanto, para acceder a ella en file2.js, que tendría que exportarlo a algún lugar donde file2.js puede llegar a ella:

// file1.js 
$(function() { 
    function hello() { 
     alert("Hello, world!"); 
    } 
    window.hello=hello; 
}); 
// file2.js 
$(function() { 
    hello(); 
}); 

Además, la secuencia de comandos donde se define la función debe ser cargado, analiza y ejecuta antes del la función se puede llamar desde otra secuencia de comandos.

+0

sus últimas 2 líneas fueron valiosas para mí. Gracias –

Cuestiones relacionadas