JavaScript - Uso de window.onload

   
Vista:

Uso de window.onload

Publicado por nemesis (7 intervenciones) el 23/05/2014 15:41:42
Buenos Días!

Mi pregunta es sobre window.onload en javascript

Resulta que tengo un script principal donde tengo el .onload desde donde llamo a unas funciones en otros scripts. Yo pensaba que ya se había cargado la página y por tanto podía referenciar a elementos HTML con el famoso document.getElementByID, pero no, y es el motivo (referenciar elementos HTML) por el que no me funciona los scripts.

Si pongo TODAS las funciones que referencian a elementos HTML dentro de window.onload, pues si, funciona. Pero a este paso me va a quedar un megascript de tropecientas mil lineas.

Mi código es algo así:

En el HTML:

1
2
3
4
5
6
7
<head>
.....
<script src="..../scriptprincipal.js"></script>
<script src="..../oyente.js"></script>
<script src="..../calendario.js"></script>
...
</head>

En el scriptprincipal.js:

1
2
3
4
window.onload=function() {
     calendario();
     oyente();
}

Y en el script calendario.js

1
2
3
function calendario() {
.....
}

¿Cual es el problema?

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Uso de window.onload

Publicado por xve (1594 intervenciones) el 23/05/2014 16:43:15
Hola Nemesis, el problema, es que si no lo haces así, al cargar el javascript, ya ejecuta el código, pero todavia no se ha cargado el contenido html, por eso te falla.

Una solución, es hacer lo que haces, pero otra solución, es cargar los archivos js al final de la pagina. De esta manera no es necesario el onload().

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de window.onload

Publicado por nemesis (7 intervenciones) el 23/05/2014 17:26:25
Es que lo hago como pongo en el código. Pensaba que así funcionaba al tener toda la página cargada, pero nada.

Lo de poner los scripts al final del body, ya lo había pensado, pero como eso es "intrusivo" al meter javascript en el html, pues utilizo window.onloas, que no me funcionan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Uso de window.onload

Publicado por xve (1594 intervenciones) el 23/05/2014 23:08:58
Hola Nemesis, te da algun error? es muy extraño, ya que debería de ejecutar las funciones una vez cargada la pagina.

Ten en cuenta, que si javascript encuentra un error, se para la carga del mismo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de window.onload

Publicado por nemesis (7 intervenciones) el 23/05/2014 23:44:52
Ahí estaba lo extraño. A base de alerts he ido chequeando la función, y si, entrar, entraba, las variables iban bien, pero los getElementById no se enteraba de nada. Vacíos del todo.

No obstante, he dado con una solución:

en window.onload del scritp principal, pongo calendario("calendario"), siendo el parámetro el id del div del HTML donde actúa la función.

Y en la definición de la propia función que está en el otro script pongo:

function calendario(param) {
var l=document.getElementById(param);
....
....
}

y funciona perfectamente. Notar que esa variable l no la uso nunca más que para lo de arriba. Es como si así se "enterara" de donde está. No se la explicación técnica, o si esto es un parche. Y la cosa es que como "calendario" llama a otras funciones que también toca etiquetas, con ir "arrastrando" los divs correspondientes como parámetros igual que lo descrito, pues estupendo.

Ya me contarás.

Un Saludo y Gracias por la atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Uso de window.onload

Publicado por xve (1594 intervenciones) el 24/05/2014 10:19:32
Es muy extraño, la verdad es que no entiendo muy bien porque te hace eso...

Me alegra que hayas encontrado una solución y la compartas!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de window.onload

Publicado por nemesis (7 intervenciones) el 25/05/2014 20:23:00
Pues he seguido con el tema. Y ya no tengo que poner el paso de parámetro con el id del div.

Eso si. En la función calendario sí tengo que poner var l=document.getElementById("calendario"); Pero ya reconoce el div sin tener que pasárselo por parámetro.

Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar