Foros del Web » Programando para Internet » Javascript »

Alargar div poco a poco

Estas en el tema de Alargar div poco a poco en el foro de Javascript en Foros del Web. Hola! Acaba de crear un script para alargar un div (no lo he copiado de internet ni nada) El caso es que no ocurre nada ...
  #1 (permalink)  
Antiguo 18/04/2009, 08:20
(Desactivado)
 
Fecha de Ingreso: abril-2009
Ubicación: En mi casa
Mensajes: 191
Antigüedad: 15 años
Puntos: 0
Sonrisa Alargar div poco a poco

Hola!

Acaba de crear un script para alargar un div (no lo he copiado de internet ni nada)

El caso es que no ocurre nada al pulsar el enlace de alargar...

Código javascript:
Ver original
  1. <script language="javascript">
  2. function alargar(){
  3. var width;
  4. width=100;
  5. var largodiv=document.getElementById("desplegablex").innerHTML;
  6.  
  7. while(width<500){
  8. width++;
  9. largodiv='<div id="desplegable" style="width:' + width + 'px;">Acortar (Nodisponibletodavia)</div>';
  10. }
  11. }
  12. </script>
  13. </head>
  14.  
  15. <body>
  16. <div class="desplegablex"><div id="desplegable" style="width:100px;"><a onclick="alargar()">Alargar</a></div></div>

En él quiero conseguir que un div se despegue, pero poco a poco...

Saludos

Última edición por Usa_Firefox; 18/04/2009 a las 08:27
  #2 (permalink)  
Antiguo 18/04/2009, 09:49
(Desactivado)
 
Fecha de Ingreso: abril-2009
Ubicación: En mi casa
Mensajes: 191
Antigüedad: 15 años
Puntos: 0
Respuesta: Alargar div poco a poco

+ info:

Creo que la info de antes se queda corta... por ello pongo claramente lo que necesito:

Hacer que un div se vaya agrandando, pero no que se redimensione directamente a un ancho de 500px, sino que se vaya desplegando de derecha a izquierda, es decir, que su redimensionamiento dure un segundo y pico aprox... como el lightbox..
  #3 (permalink)  
Antiguo 20/04/2009, 13:23
(Desactivado)
 
Fecha de Ingreso: abril-2009
Ubicación: En mi casa
Mensajes: 191
Antigüedad: 15 años
Puntos: 0
Respuesta: Alargar div poco a poco

Da igual.. he leído que no es posible con javascript... es con ajax y eso... PEro gracias de todos modos
  #4 (permalink)  
Antiguo 20/04/2009, 14:29
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Alargar div poco a poco

En realidad sí se hace con javascript. Sólo que hay algunos conceptos equivocados, por ejemplo, estás usando, en lugar del valor de un atributo id, el valor de un atributo class como argumento de document.getElementById. Y hay que usar temporizadores para hcer lo que necesitás.
Si no te lo tomás a mal, te paso unos enlaces para que leas en el orden en que te los paso:
http://www.disegnocentell.com.ar/cur...s/basicos.html
http://www.disegnocentell.com.ar/cur...cosVarios.html
http://www.disegnocentell.com.ar/cur...rmularios.html
http://www.disegnocentell.com.ar/cur...rizadores.html
http://www.disegnocentell.com.ar/notas2.php?id=239
  #5 (permalink)  
Antiguo 20/04/2009, 14:33
Avatar de jeybi  
Fecha de Ingreso: julio-2008
Ubicación: Mexico
Mensajes: 130
Antigüedad: 15 años, 9 meses
Puntos: 10
Respuesta: Alargar div poco a poco

No tiene nada que ver ajax, lo que pasa es que el while se ejecuta en mucho menos de un segundo, lo que debes hacer es usar setInterval(tufuncion, cada_x_tiempo), cada_x_tiempo puede ser por ejemplo 10 (expresado en milisegundos), este codigo hara que tu funcion se ejecute cada 10 milisegundos una y otra vez, la funcion debe encoger entonces el div en 1 o 2 px, para parar el intervalo tendrias que hacer algo asi:

var miintervalo = setInterval(tufuncion, cada_x_tiempo);

tufunfion(){
......
if(width == elwidthfinal)
clearInterval(miintervalo); //Se deja de ejecutar setinterval
}
  #6 (permalink)  
Antiguo 20/04/2009, 16:27
Avatar de alor86  
Fecha de Ingreso: abril-2009
Mensajes: 110
Antigüedad: 15 años
Puntos: 5
De acuerdo Respuesta: Alargar div poco a poco

exactamente no tiene que ver con ajax. Para hacer el efecto que quieres tienes que usar intervalos te pongo el codigo de como lo deberia hacer espero y te sirva.

<html>

<head>
<script type="text/javaSCript">
var width=100;
var inter;
function ampliar(){
inter = setInterval(amplia,5);
}
function amplia(){
if(width<=500){
width+=10;
document.getElementById('x').style.width=width+'px ';
}
else{
clearInterval(inter);
}
}
</script>
</head>

<body>
<a href="javascript:ampliar()">ampliar</a>
<div id="x" style="width:100px;height:100px;border:solid 1px black">
</div>
</body>
</html>
  #7 (permalink)  
Antiguo 26/04/2009, 13:34
(Desactivado)
 
Fecha de Ingreso: abril-2009
Ubicación: En mi casa
Mensajes: 191
Antigüedad: 15 años
Puntos: 0
Respuesta: Alargar div poco a poco

Muchas gracias!!

Ya daba el tema por perdido, pero he revisado mis temas y vi todas esas respuestas.

Muchas gracias.

Me quedo con el ejemplo e investigaré todo para poder hacerlo yo solo, que es lo que interesa.



Edito:

He hecho un código que lo abre y una vez abierto muestra la opción cerrar... Gracias a vuestra ayuda he aprendido algo más

Código javascript:
Ver original
  1. <html>
  2.  
  3. <head>
  4. <script type="text/javaSCript">
  5. var width=100;
  6. var inter;
  7. function ampliar(){
  8. inter = setInterval(amplia,5);
  9. }
  10. function amplia(){
  11. if(width<=500){
  12. width+=10;
  13. document.getElementById('x').style.width=width+'px';
  14. }
  15. else{
  16. clearInterval(inter);
  17. document.getElementById('link').innerHTML='<a href="javascript:cerrar()">Cerrar</a>';
  18. }
  19. }
  20.  
  21. //Cerrar
  22. function cerrar(){
  23. intercierra = setInterval(cierra,5);
  24. }
  25. function cierra(){
  26. if(width>=100){
  27. width-=10;
  28. document.getElementById('x').style.width=width+'px';
  29. }
  30. else{
  31. clearInterval(intercierra);
  32. document.getElementById('link').innerHTML='<a href="javascript:ampliar()">Ampliar</a>';
  33. }
  34. }
  35. </script>
  36. </head>
  37.  
  38. <body>
  39. <div id="link">
  40. <a href="javascript:ampliar()">Ampliar</a>
  41. </div>
  42. <div id="x" style="width:100px;height:100px;border:solid 1px black">
  43. </div>
  44. </body>
  45. </html>

Edito 2: (Jaja)

Ya que pregunté, quiero dejar algo más..

Si añadimos esta línea:

document.getElementById('x').style.height=width+'p x';

debajo de document.getElementById('x').style.width=width+'px ';

...se nos ampliará de manera diagonal, es decir, también crecerá el alto... (Ten en cuenta agregar esta línea en las dos funciones, amplia y cierra, para que también se efectúe al cerrar)

Última edición por Usa_Firefox; 26/04/2009 a las 13:44 Razón: Nuevo código
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 21:00.