Foros del Web » Programando para Internet » Javascript »

Llamar función js fuera de un evento.

Estas en el tema de Llamar función js fuera de un evento. en el foro de Javascript en Foros del Web. Seguro que es muy simple, pero no me sale. Intento llamar a una función que asigna un estilo altura a una capa, justo antes de ...
  #1 (permalink)  
Antiguo 21/05/2006, 18:31
 
Fecha de Ingreso: mayo-2006
Mensajes: 32
Antigüedad: 18 años
Puntos: 0
Llamar función js fuera de un evento.

Seguro que es muy simple, pero no me sale. Intento llamar a una función que asigna un estilo altura a una capa, justo antes de que esta se muestre, pero no hay manera.
Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Untitled Document</title>
<script language="javascript">
function ampliar(){
	var altura=100;
	document.getElementById('relleno').style.height = altura+'px';
}
</script>
</head>

<body>

<script language="javascript">
	ampliar();
</script>

<div id="relleno" style="border:1px solid black; background-color:#00FF00;">
primero
</div>
<div>segundo</div>

</body>
</html>
Si pongo la llamada a la función en un evento, por ejemplo:
Código:
<body onload="javascript: ampliar();">
entonces sí que funciona.

¿Alguien sabe como llamar a esta función con el primer código?

Muchas gracias,
Javier
  #2 (permalink)  
Antiguo 22/05/2006, 00:56
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Javier F.

Está llamando a la función bien, pero esa función ejecuta la línea:

document.getElementById('relleno').style.height = altura+'px';

antes de que se "cree" el <div id="relleno"> y eso te dará un error. Tendrías que hacerlo al revés:
Código:
<div id="relleno" style="border:1px solid black; background-color:#00FF00;">
primero
</div>
<script type="text/javascript">ampliar();</script>
Saludos,
  #3 (permalink)  
Antiguo 22/05/2006, 02:18
 
Fecha de Ingreso: mayo-2006
Mensajes: 32
Antigüedad: 18 años
Puntos: 0
Gracias

Era eso. Yo pensé que de alguna forma ese valor modificaría el de la hoja de estilos.

Mi problema es que la altura de una capa debe ser, como mínimo, igual de alta que otra creada antes. Por tanto capturo la altura de la primera capa y debería dárselo a la segunda, pero lo interesante sería hacerlo antes o en el mismo instante de crearla, para evitar el efecto persiana, es decir, que cargue todo lo de esa página y luego acabe de darle la altura.

Con PHP sería fácil, caso de poder pasárle con una variable la altura de la primera capa:
Código:
<div id="relleno" style="height:<?php echo $altura ?>">....
pero mi imagino que con javascript esto no es posible.

Un saludo y gracias,
Javier
  #4 (permalink)  
Antiguo 22/05/2006, 02:41
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Se me ocurre que puedes hacer algo así:
Código:
<script type="text/javascript">
document.write('<div id="relleno" style="height:' + altura +'">');
</script>
Saludos,
  #5 (permalink)  
Antiguo 22/05/2006, 04:02
 
Fecha de Ingreso: mayo-2006
Mensajes: 32
Antigüedad: 18 años
Puntos: 0
Gracias, mira que le di vueltas, y a veces lo más sencillo es lo menos evidente.

Javier
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:19.