Foros del Web » Programando para Internet » Javascript »

Cambiar style en capa mediante javascript

Estas en el tema de Cambiar style en capa mediante javascript en el foro de Javascript en Foros del Web. Hola a todos!! Resulta que tengo que cambiar el atributo height de una capa donde va un menú (porque al pulsar en uno de los ...
  #1 (permalink)  
Antiguo 20/11/2005, 14:55
 
Fecha de Ingreso: noviembre-2005
Mensajes: 7
Antigüedad: 18 años, 5 meses
Puntos: 0
Cambiar style en capa mediante javascript

Hola a todos!! Resulta que tengo que cambiar el atributo height de una capa donde va un menú (porque al pulsar en uno de los botones, salen más opciones) y según he leido se podría hacer con:

Código HTML:
<script language="javascript" type="text/javascript">
document.all.nombre_capa.style.height=500;<script> 
Los estilos de la capa los tengo en un css "externo". No sé porque esto no funciona, acaso influye algún factor más?? la capa tiene posicion:absolute.. No sé, estoy perdida y tengo que cambiar varias capas (en otra el atributo top). Alguna sugerencia?? Gracias.
  #2 (permalink)  
Antiguo 20/11/2005, 16:31
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 21 años, 5 meses
Puntos: 0
Prueba con getElement.

function CambiaEstilo(obj,size){
var obj =
document.all ? document.all[obj] :
document.getElementById(obj);

obj.style.height=size;
}
__________________
escribiendo mi libro de AJAX
  #3 (permalink)  
Antiguo 20/11/2005, 16:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

document.all es cosa microsoft y opera (no estándar) y los atributos deben tener sus medidas...

Además debes asociarlo a algo (por ejemplo el click del ratón en el botón...)

<input type="button" value="cambio"
onclick="document.getElementById(nombre_capa).styl e.height = '500px'" />

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 21/11/2005, 05:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 7
Antigüedad: 18 años, 5 meses
Puntos: 0
Hola de nuevo! Antes de nada... muchas gracias por la ayuda.
Al final he hecho la siguiente función en javascript:
Código HTML:
function CambiaEstilo(obj,tam,atrib){
		var obj = document.all ? document.all[obj] :
                document.getElementById(obj);
		if (atrib=="size")
		   obj.style.height=tam;
		if (atrib =="top")
		    obj.style.top=tam;
		}
La razón de meter el parámetro "atrib" es porque necesito cambiar el height y el top. Por fin me redimensiona el tamaño pero la posición respecto la parte superior.. nada. Según he leido existe la posibilidad de hacerlo con style.top o con style.pixelTop, alguien sabe la diferencia?? de momento eso así no me funciona, hace la capa más grande pero no lo posiciona.
La llamada a la función, CambiaEstilo("nombre_capa",620,"top"); vamos, casi igual que para redimensionarlo. Alguna idea?? muchas gracias
  #5 (permalink)  
Antiguo 21/11/2005, 05:54
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Un par de apuntes...

Tanto explorer como opera que "cuelan" document.all también implementan getElementById, así que te sobra la primera línea...

Si en vez de poner size para el estilo height, pones tambien "height" como posible atrib... se implementaría la función en una sola línea...

Código:
function CambiaEstilo(obj,tam,atrib){
                document.getElementById(obj).style[atrib] = tam;
}
... el parámetro atrib tendría que ser el valor del estilo...

Pruébalo y nos comentas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 21/11/2005, 09:34
 
Fecha de Ingreso: noviembre-2005
Mensajes: 7
Antigüedad: 18 años, 5 meses
Puntos: 0
He cambiado la función como me dijiste.. de tal forma que está actualmente así:

function CambiaEstilo(obj,tam,atrib){
document.getElementById(obj).style[atrib] = tam;
}
Tengo las dos llamadas a la función: CambiaEstilo("menu-izq",850,"height");CambiaEstilo("info-inf",720,"top");

menu-izq e info-inf son capas. La del atributo height perfecto, lo redimensiona, pero el top en la otra.. nada, es que esto no funciona con el atributo top?? si lo que kiero es bajar esa capa.. hay alguna otra forma?? Gracias!!
Un saludo!!!
  #7 (permalink)  
Antiguo 21/11/2005, 12:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

a los estilos debes ponerle también si se trata de pixeles u otra cosa...

CambiaEstilo("menu-izq","850px","height");CambiaEstilo("info-inf","720px","top");

Y tanto el top como el left (si fuera el caso) deberían estar en capas con posición absolute... (creo que también vale relative)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 21/11/2005, 15:36
 
Fecha de Ingreso: noviembre-2005
Mensajes: 7
Antigüedad: 18 años, 5 meses
Puntos: 0
Hola de nuevo!! Nada, imposible, el atributo height lo cambia pero el top.. ni caso. Tengo la misma función que puse más arriba.. y cambié lo de los pixeles. pero nada, no hace caso. No tengo ni idea ya de cómo hacerlo. Las capas son absolutas, pero he probado esto también en capas relativas. He probado en capas que contienen capas.. capas con una sola imagen.. Ya no sé qué más hacer. Alguna otra forma de poder cambiar la distancia respecto al borde superior?? aunque sea con otro lenguaje.. (también utilizo php). No sé porqué no funciona esto.. y es que tengo que hacerlo :S Gracias!! Un saludo!!
  #9 (permalink)  
Antiguo 25/02/2006, 08:45
yz!
Invitado
 
Mensajes: n/a
Puntos:
Hola neisha:

Ando con el mismo problema que tu. ¿Lo resolviste?

Un saludo!!
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 12:18.