Foros del Web » Programando para Internet » Javascript »

esta funcion debe desplegararse mas rapido y depende del tiempo pero esta muy lenta

Estas en el tema de esta funcion debe desplegararse mas rapido y depende del tiempo pero esta muy lenta en el foro de Javascript en Foros del Web. mas rápido según el tiempo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Documento sin t&iacute;tulo</title> <script ...
  #1 (permalink)  
Antiguo 28/10/2011, 03:44
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años, 1 mes
Puntos: 8
esta funcion debe desplegararse mas rapido y depende del tiempo pero esta muy lenta

mas rápido según el tiempo


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>

<script type="text/javascript">
function mensaje(a){
et=parseInt(document.getElementById(a).style.heigh t);
et++;
document.getElementById(a).innerHTML = et;
document.getElementById(a).style.height=et+"px";

}
</script>


</head>

<body>


<input type="button" id="recoger" value="recoger" onclick=" setInterval(mensaje('capa2'),10 );" /> //esta funcion es para que se desplege rapido
<input type="button" id="recoger" value="recoger" onclick=" setInterval(mensaje('capa3'),10 );" /> /esta funcion es para que se desplege rapido


<div id="capa2" style="width:720px; height:305px; background-color: #CC0000; position:relative;"></div>

<div id="capa3" style="width:720px; height:305px; background-color: #CCFF00; position:relative;"></div>



</body>
</html>
  #2 (permalink)  
Antiguo 28/10/2011, 06:55
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

si quieres que se ejecute más rápido, lo más lógico es asignar menos tiempo en el timeout, claro esto depende también de la capacidad de respuesta del motor js del cliente, eso no lo puedes alterar
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 28/10/2011, 15:05
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años, 1 mes
Puntos: 8
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Cita:
Iniciado por maycolalvarez Ver Mensaje
si quieres que se ejecute más rápido, lo más lógico es asignar menos tiempo en el timeout, claro esto depende también de la capacidad de respuesta del motor js del cliente, eso no lo puedes alterar
creo que no hiciste la prueba de mi codigo
copia el código y pruebalo
y veras que lo que dijiste no es la solución
y si estoy de acuerdo vale mas saber poco que mucho y nada
muchas gracias por tu opinión
sin embargo este tipo de preguntas es para gente que le guste programar y sienta
placer al poder entender cualquier código ya que esta interesante
  #4 (permalink)  
Antiguo 28/10/2011, 15:16
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

claro, si dejas el innerHTML activo es normal que sea más lento, además si va de 1 en 1 estás limitado a que se despliegue a esa velocidad, a no ser que uses un función exponencial para aumentarlo.

además tienes errores en la implementación del setInterval

y por cierto, sentir placer por la programación no implica que me ponga a ejecutar cuanto código posteen los participantes, yo también tengo vida y mi propio código con el cual apasionarme, tu opinión está fuera de contexto, saludos.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 28/10/2011 a las 15:25
  #5 (permalink)  
Antiguo 28/10/2011, 15:23
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 8 meses
Puntos: 26
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Amigo creo que tu error es el uso de setInterval
para usar una funcion con parametros deberías usar algo así

onclick=" setInterval(function(){mensaje('capa2')},10 );"

para los dos casos
Saludos
__________________
En mi Blog puedes ver articulos javascript y más...
@Franz1628
  #6 (permalink)  
Antiguo 28/10/2011, 15:40
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Hay varios "fallos", si lo que buscas es la optimización del código para que sea más rapido:
A) Cada llamada a la función implica calcular el height del elemento, y después setearlo, esto puede afectar mucho la UI por el repaint y reflow
B) Llamas 3 veces a document.getElementById, esta función es más rápida que otras del DOM puesto que la id en principio es única, pero sigue siendo una pédida de tiempo, usa una variable local!
C) Si usas un setInterval deberás establecer en algún punto un clearInterval, o si no el div crecerá sin parar hasta que se cuelgue el navegador.
D) No uses una función lineal en las transiciones!
E) Yo no suelo hacer apología de los frameworks a no ser que domines bien el JS "normal", pero en este caso creo que tienes demasiada tarea y poco conocimiento como para hacerlo por ti mismo, así que puedes usar jQuery, que además funciona en todos los sitios y está optimizado.
Sin embargo, si deseas investigar y hacerlo por ti mismo, te recomiendo altamente que leas el post de @panino5001 sobre las transiciones en JS, muy bien explicado y muy útil.
Espero que todo esto te sirva de ayuda.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 28/10/2011, 15:51
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Así sería como yo dejaría el código, pero es cierto, para aumentar la velocidad, se depende de lo que le sumes a et, y como te dijo maycolalvarez, si quieres que se aumente la velocidad esa es la única opción, por que incluso le puse como tiempo de demora al setInterval solo cero (0), y seguía igual de lento.

Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Reto 2</title>
  6.  
  7. <script type="text/javascript">
  8. window.onload = function () {
  9.     document.getElementById("r1").onclick = enviarMensaje;
  10.     document.getElementById("r2").onclick = enviarMensaje;
  11. }
  12.  
  13. function enviarMensaje (evt) {
  14.     if (evt.target.id == "r1") {
  15.         setInterval(mensaje,6, "capa2" );
  16.     } else {
  17.         setInterval(mensaje,6, "capa3");
  18.     }
  19. }
  20.  
  21. function mensaje(a){
  22.     var et = parseInt(document.getElementById(a).style.height);
  23.     et += 3;   
  24.     document.getElementById(a).style.height = et+"px";
  25. }
  26. </script>
  27. </head>
  28.  
  29. <body>
  30. <input type="button" id="r1" value="Recoger" />
  31. <input type="button" id="r2" value="Recoger" />
  32. <div id="capa2" style="width:720px; height:305px; background-color: #CC0000; position:relative;"></div>
  33. <div id="capa3" style="width:720px; height:305px; background-color: #CCFF00; position:relative;"></div>
  34.  
  35. </body>
  36. </html>

Si no estás contento con mi opción, por favor explica más detalladamente que es lo que quieres lograr.

Saludos.
  #8 (permalink)  
Antiguo 28/10/2011, 16:48
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Raziel_Ravenheart, ese código no es válido por diversas razones
  • evt.target ----> para que funcione en ie y en cualquier otro navegador cámbialo por this.id
  • setInterval(mensaje,6, "capa2" ) ---> el 3º valor no es aceptado por ie
  • Cita:
    Iniciado por _cronos2 Ver Mensaje
    A) Cada llamada a la función implica calcular el height del elemento, y después setearlo, esto puede afectar mucho la UI por el repaint y reflow
  • Cita:
    Iniciado por _cronos2 Ver Mensaje
    C) Si usas un setInterval deberás establecer en algún punto un clearInterval, o si no el div crecerá sin parar hasta que se cuelgue el navegador.
  #9 (permalink)  
Antiguo 28/10/2011, 17:13
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 13 años, 2 meses
Puntos: 37
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Gracias Isabel por señalarme esto, y voy a tenerlo en cuenta de ahora en adelante, pero la razón, por la que utilicé event como evt, es que:

1. Yo estoy totalmente consciente que no sirve en Internet Explorer

2. Por algún motivo sigo utilizando event en vez de this, para cualquier cosa, ya que con event accedo a muchas otras cosas que this no tiene, por ejemplo, charCodes, keyCodes, which, y otras propiedades, y por eso me acostumbré a utilizar event.

3. Actualmente estoy desarrollando una página web, y por motivos de comodidad, mi contratante me dijo que no tuviera en cuenta internet explorer, ya que le explique que a veces tendría que hacer las cosas dos o tres veces dependiendo del navegador, y siguiendo el ejemplo de algunos programadores amigos, ya no voy a volver a hacer páginas que soporten Internet Explorer, lo cual no es un traumatismo grande, ya que chrome y firefox se descargan muy rápido.

4. La razón por la que no deseo volver a soportar Internet Explorer, es por que sus desarrolladores, específicamente Microsoft, muy difícilmente se une a la causa de estandares web, basta con solo mirar el código fuente de la página de inicio de hotmail, ya que el layout, está hecho con tablas, y como todos sabemos, para alquien que le importe esto realmente, le hace sangrar lo ojos.. jejejejeje, a mi no, solo me decepcionó más. Y la verdad no soy muy partidario de Microsoft, solo por lo q los juegos corren bienn en windows xp, y situación familiar, pero prefiero linux, para lo demás.

Yo se que muchos no están de acuerdo con esta práctica, pero aún así, ya me he "mal acostumbrado" a utilzar XmlHttpRequest directamente sin acudir a objetos activex-aunque IE ya soporta el elemento directo, sin necesidad de activeX-, y tampoco utilizo el modelo window.event de internet explorer. Pero como te dije, para una futura ocasión, haré caso de los consejos que han dado cronos y tu.

Les dejo un ejemplo de una página donde su desarrollador ya decidió no soportar IE:
Clan 1UP Urban Terror
Tema del foro donde dicen que no van a soportar IE

Y ya hay otras varias...
  #10 (permalink)  
Antiguo 29/10/2011, 22:31
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años, 1 mes
Puntos: 8
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

esta es la solución que yo estoy realizando espero que les guste
todavía no esta terminada pero vean el código y prubenla esta muy buena



Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin t&iacute;tulo</title>
  6. <style type="text/css">
  7. <!--
  8. body {
  9. background-color: #FFCC99;
  10. }
  11. .contenedor{ width:700px; height:800px;}
  12. a{
  13.     background:#FFCC00;
  14.     border: medium solid #666666;
  15. }
  16. -->
  17. </style>
  18. <script type="text/javascript">
  19. var g, tt;
  20. var p=0,t;
  21. function mover(obj){
  22. if(p>350){
  23. clearTimeout(t);
  24. p=0;
  25. return;
  26. }
  27. p+=5;
  28. document.getElementById(obj).style.height=p+'px';
  29. document.getElementById(obj).style.width=p+'px';
  30. t=setTimeout( function(){ mover(obj) },30 ); }
  31.  
  32. function restar(obj){
  33.  g=parseInt(document.getElementById(obj).style.height);
  34.   document.getElementById("fg").innerHTML = g;
  35. if(g<=50){
  36. clearTimeout(tt);
  37. g=0;
  38. return;
  39. }
  40. g-=5;
  41. document.getElementById("fg").innerHTML =g;
  42. document.getElementById(obj).style.height=g+'px';
  43. document.getElementById(obj).style.width=g+'px';
  44. tt=setTimeout( function(){ restar(obj) },30 ); }
  45. </script>
  46. </head>
  47.     <body>
  48. <a onclick="mover('cuadros')">cuadro uno mosatar </a> &nbsp;<a onclick="restar('cuadros')">cuadros uno pregar</a>&nbsp; <a onclick="mover('cuadro')">cuadro dos</a>
  49.   &nbsp;<a onclick="restar('cuadro')">cuadro dos pregar</a>
  50.   <div class="contenedor" >    
  51. <div id="cuadros" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; top: 36px; left: 12px;" onClick="mover('cuadros')">click</div>
  52.     <br />
  53.     <br />
  54.     <br />
  55. <div id="cuadro" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; left: 367px; top: 36px;" >click</div>
  56.  </div>
  57.  <div id="fg"></div>  
  58.    
  59.     </body>
  60.     </html>

Última edición por jor_0203; 29/10/2011 a las 22:38
  #11 (permalink)  
Antiguo 30/10/2011, 00:09
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años, 1 mes
Puntos: 8
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

esta función solo tiene un problema el div se va haciendo mas chico o más grande pero el contenido no desaparece cuando lo hacemos muy chiquito
hay que ver como borramos el contenido
ojala alguien pueda dar una idea

Última edición por jor_0203; 30/10/2011 a las 00:27
  #12 (permalink)  
Antiguo 30/10/2011, 02:23
 
Fecha de Ingreso: septiembre-2011
Mensajes: 158
Antigüedad: 13 años, 2 meses
Puntos: 15
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Cita:
Iniciado por jor_0203 Ver Mensaje
esta función solo tiene un problema el div se va haciendo mas chico o más grande pero el contenido no desaparece cuando lo hacemos muy chiquito
hay que ver como borramos el contenido
ojala alguien pueda dar una idea
ESO SE ASE CON CSS ACA TE DEJO TU CODIGO CORREGIDO QUE ELIMINA TAMBIEN EL CONTENIDO CUANDO EL CUADRITO SE ASE PEQUEÑO
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
body {
background-color: #FFCC99;
}
.contenedor{ width:700px; height:800px;}
a{
    background:#FFCC00;
    border: medium solid #666666;
}
-->
</style>
<script type="text/javascript">
var g, tt;
var p=0,t;
function mover(obj){
if(p>350){
clearTimeout(t);
p=0;
return;
}
p+=5;
document.getElementById(obj).style.height=p+'px';
document.getElementById(obj).style.width=p+'px';
t=setTimeout( function(){ mover(obj) },30 ); }
 
function restar(obj){
 g=parseInt(document.getElementById(obj).style.height);
  document.getElementById("fg").innerHTML = g;
if(g<=0){
clearTimeout(tt);
g=0;
return;
}
g-=5;
document.getElementById("fg").innerHTML =g;
document.getElementById(obj).style.height=g+'px';
document.getElementById(obj).style.width=g+'px';
tt=setTimeout( function(){ restar(obj) },30 ); } 
</script>
</head>
    <body>
<a onclick="mover('cuadros')">cuadro uno mosatar </a> &nbsp;<a onclick="restar('cuadros')">cuadros uno pregar</a>&nbsp; <a onclick="mover('cuadro')">cuadro dos</a> 
  &nbsp;<a onclick="restar('cuadro')">cuadro dos pregar</a> 
  <div class="contenedor" >    
<div id="cuadros" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; top: 36px; left: 12px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
    <br />
    <br />
    <br />
<div id="cuadro" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; left: 367px; top: 36px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
 </div> 
 <div id="fg"></div>  
    
    </body>
    </html>
  #13 (permalink)  
Antiguo 31/10/2011, 09:08
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años, 1 mes
Puntos: 8
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

me mandaron un comentario que le encontraron un error, cuando el cuadro se muestra y le dan otra vez mostrar, vuele a cargarse, como si estuviera escondido y eso esta mal, ya que no debía hacer nada, por que lógicamente se muestra, ojala alguien tenga la solución.
pero ya es la ultima. gracias a todos, ya que todos hemos cooperado


Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin t&iacute;tulo</title>
  6. <style type="text/css">
  7. <!--
  8. body {
  9. background-color: #FFCC99;
  10. }
  11. .contenedor{ width:700px; height:800px;}
  12. a{
  13.     background:#FFCC00;
  14.    border: medium solid #666666;
  15. }
  16. -->
  17. </style>
  18. <script type="text/javascript">
  19. var g, tt;
  20. var p=0,t;
  21. function mover(obj){
  22. if(p>350){
  23. clearTimeout(t);
  24. p=0;
  25. return;
  26. }
  27. p+=5;
  28. document.getElementById(obj).style.height=p+'px';
  29. document.getElementById(obj).style.width=p+'px';
  30. t=setTimeout( function(){ mover(obj) },30 ); }
  31.  
  32. function restar(obj){
  33.  g=parseInt(document.getElementById(obj).style.height);
  34.   document.getElementById("fg").innerHTML = g;
  35. if(g<=0){
  36. clearTimeout(tt);
  37. g=0;
  38. return;
  39. }
  40. g-=5;
  41. document.getElementById("fg").innerHTML =g;
  42. document.getElementById(obj).style.height=g+'px';
  43. document.getElementById(obj).style.width=g+'px';
  44. tt=setTimeout( function(){ restar(obj) },30 ); }
  45. </script>
  46. </head>
  47.     <body>
  48. <a onclick="mover('cuadros')">cuadro uno mosatar </a> &nbsp;<a onclick="restar('cuadros')">cuadros uno pregar</a>&nbsp; <a onclick="mover('cuadro')">cuadro dos</a>
  49.   &nbsp;<a onclick="restar('cuadro')">cuadro dos pregar</a>
  50.   <div class="contenedor" >    
  51. <div id="cuadros" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; top: 36px; left: 12px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  52.     <br />
  53.     <br />
  54.     <br />
  55. <div id="cuadro" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; left: 367px; top: 36px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  56.  </div>
  57.  <div id="fg"></div>  
  58.    
  59.     </body>
  60.     </html>

Última edición por jor_0203; 31/10/2011 a las 09:58
  #14 (permalink)  
Antiguo 31/10/2011, 10:37
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 8 meses
Puntos: 26
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

a la variable p debes de asignarle el valor de cero en la funcion restar, y agragar un else en la función mover.
Algo así :

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin t&iacute;tulo</title>
  5. <style type="text/css">
  6. <!--
  7. body {
  8. background-color: #FFCC99;
  9. }
  10. .contenedor{ width:700px; height:800px;}
  11. a{
  12. * * background:#FFCC00;
  13. * * border: medium solid #666666;
  14. }
  15. -->
  16. <script type="text/javascript">
  17. var g, tt;
  18. var p=355,t;
  19. function mover(obj){
  20.     if(p>350){
  21.         clearTimeout(t);
  22.         return;
  23.     }
  24.     else{
  25.         p+=5;
  26.         document.getElementById(obj).style.height=p+'px';
  27.         document.getElementById(obj).style.width=p+'px';
  28.         t=setTimeout( function(){ mover(obj) },30 );
  29.     }
  30. }
  31.  
  32. function restar(obj){
  33.     g=parseInt(document.getElementById(obj).style.height);
  34.     document.getElementById("fg").innerHTML = g;
  35.     if(g<=0){
  36.         clearTimeout(tt);
  37.         g=0;p=0;
  38.         return;
  39.     }
  40.     g-=5;
  41.     document.getElementById("fg").innerHTML =g;
  42.     document.getElementById(obj).style.height=g+'px';
  43.     document.getElementById(obj).style.width=g+'px';
  44.     tt=setTimeout( function(){ restar(obj) },30 );
  45. }
  46. </head>
  47. * * <body>
  48. <a onclick="mover('cuadros')">cuadro uno mosatar </a> &nbsp;<a onclick="restar('cuadros')">cuadros uno pregar</a>&nbsp; <a onclick="mover('cuadro')">cuadro dos</a>
  49. * &nbsp;<a onclick="restar('cuadro')">cuadro dos pregar</a>
  50. * <div class="contenedor" > * *
  51. <div id="cuadros" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; top: 36px; left: 12px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  52. * * <br />
  53. * * <br />
  54. * * <br />
  55. <div id="cuadro" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; left: 367px; top: 36px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  56. *</div>
  57. *<div id="fg"></div> *
  58. * *
  59. * * </body>
  60. * * </html>

Deberías usar variables locales mejor en vez de globales ya que hay un error cuando muestras dos div ocultos uno seguido de otro y tambien cuando ocultas dos uno seguido de otro

Saludos
__________________
En mi Blog puedes ver articulos javascript y más...
@Franz1628

Última edición por Franz1628; 31/10/2011 a las 10:52
  #15 (permalink)  
Antiguo 31/10/2011, 11:01
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 8 meses
Puntos: 26
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

He ordenado un poco tu código y le he puesto botones en vez de links porque no se notaban, tambien he cambiado algunas variables que las tenias globales a locales.
Algo así
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin t&iacute;tulo</title>
  5. <style type="text/css">
  6. <!--
  7. body {
  8. background-color: #FFCC99;
  9. }
  10. .contenedor{ width:700px; height:800px;}
  11. a{
  12. * * background:#FFCC00;
  13. * * border: medium solid #666666;
  14. }
  15. -->
  16. <script type="text/javascript">
  17.  
  18.  
  19. function mover(obj){
  20.     var p = parseInt(document.getElementById(obj).style.height);
  21.     if(p>350){
  22.         clearTimeout(t);
  23.         return;
  24.     }
  25.     else{
  26.         p+=5;
  27.         document.getElementById(obj).style.height=p+'px';
  28.         document.getElementById(obj).style.width=p+'px';
  29.         var t=setTimeout( function(){ mover(obj) },30 );
  30.     }
  31. }
  32.  
  33. function restar(obj){
  34.     var g=parseInt(document.getElementById(obj).style.height);
  35.     document.getElementById("fg").innerHTML = g;
  36.     if(g<=0){
  37.         clearTimeout(tt);
  38.         g=0;p=0;
  39.         return;
  40.     }
  41.     g-=5;
  42.     document.getElementById("fg").innerHTML =g;
  43.     document.getElementById(obj).style.height=g+'px';
  44.     document.getElementById(obj).style.width=g+'px';
  45.     var tt=setTimeout( function(){ restar(obj) },30 );
  46. }
  47. </head>
  48. <input type="button" onclick="mover('cuadros')" value="cuadro uno mosatar"> &nbsp;
  49. <input type="button" onclick="restar('cuadros')" value="cuadros uno pregar">&nbsp;
  50. <input type="button" onclick="mover('cuadro')" value="cuadro dos"> &nbsp;
  51. <input type="button" onclick="restar('cuadro')" value="cuadro dos pregar">
  52. <div class="contenedor">
  53.     <div id="cuadros" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; top: 36px; left: 12px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  54.     <div id="cuadro" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; left: 367px; top: 36px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  55. </div>
  56. *<div id="fg"></div> *
  57. * *
  58. </body>
  59. </html>

Todavía hay un error cuando muestras y a la mitad quieres ocultar y viceversa.
Eso lo puedes hacer creo
__________________
En mi Blog puedes ver articulos javascript y más...
@Franz1628
  #16 (permalink)  
Antiguo 31/10/2011, 17:26
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años, 1 mes
Puntos: 8
Respuesta: esta funcion debe desplegararse mas rapido y depende del tiempo pero esta

Cita:
Iniciado por Franz1628 Ver Mensaje
He ordenado un poco tu código y le he puesto botones en vez de links porque no se notaban, tambien he cambiado algunas variables que las tenias globales a locales.
Algo así
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin t&iacute;tulo</title>
  5. <style type="text/css">
  6. <!--
  7. body {
  8. background-color: #FFCC99;
  9. }
  10. .contenedor{ width:700px; height:800px;}
  11. a{
  12. * * background:#FFCC00;
  13. * * border: medium solid #666666;
  14. }
  15. -->
  16. <script type="text/javascript">
  17.  
  18.  
  19. function mover(obj){
  20.     var p = parseInt(document.getElementById(obj).style.height);
  21.     if(p>350){
  22.         clearTimeout(t);
  23.         return;
  24.     }
  25.     else{
  26.         p+=5;
  27.         document.getElementById(obj).style.height=p+'px';
  28.         document.getElementById(obj).style.width=p+'px';
  29.         var t=setTimeout( function(){ mover(obj) },30 );
  30.     }
  31. }
  32.  
  33. function restar(obj){
  34.     var g=parseInt(document.getElementById(obj).style.height);
  35.     document.getElementById("fg").innerHTML = g;
  36.     if(g<=0){
  37.         clearTimeout(tt);
  38.         g=0;p=0;
  39.         return;
  40.     }
  41.     g-=5;
  42.     document.getElementById("fg").innerHTML =g;
  43.     document.getElementById(obj).style.height=g+'px';
  44.     document.getElementById(obj).style.width=g+'px';
  45.     var tt=setTimeout( function(){ restar(obj) },30 );
  46. }
  47. </head>
  48. <input type="button" onclick="mover('cuadros')" value="cuadro uno mosatar"> &nbsp;
  49. <input type="button" onclick="restar('cuadros')" value="cuadros uno pregar">&nbsp;
  50. <input type="button" onclick="mover('cuadro')" value="cuadro dos"> &nbsp;
  51. <input type="button" onclick="restar('cuadro')" value="cuadro dos pregar">
  52. <div class="contenedor">
  53.     <div id="cuadros" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; top: 36px; left: 12px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  54.     <div id="cuadro" style="width:355px; height:355px; background-color:#F00; position:absolute; text-align:center; line-height:50px; color:white; left: 367px; top: 36px; overflow:hidden;" onClick="mover('cuadros')">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget auctor massa. Donec at lectus urna, at fermentum lorem. Maecenas lectus urna, fermentum a adipiscing nec, pharetra vel odio. Nulla sit amet enim at mi pulvinar rhoncus. Proin eleifend mauris in lectus feugiat aliquet. Nullam sit amet mauris quis sem sagittis faucibus a ut nisi. Vestibulum facilisis tincidunt urna, eget porttitor odio elementum in. Quisque accumsan augue quis risus faucibus vel euismod neque hendrerit. Vivamus blandit viverra mauris ut ullamcorper. Nulla facilisi. Nulla sit amet condimentum ligula. Mauris quis magna nibh, et auctor quam.</div>
  55. </div>
  56. *<div id="fg"></div> *
  57. * *
  58. </body>
  59. </html>

Todavía hay un error cuando muestras y a la mitad quieres ocultar y viceversa.
Eso lo puedes hacer creo
ya lo vi
y si tienes razón
es cuando esta a la mitad
pero esta función esta quedando muy bien
va atener un gran uso
paro todos los de la comunidad
uso de capas dinámicas con movimiento
voy haber como le hago para mejorar el código
mil gracias

Etiquetas: depende, funcion, html, lenta, rapido
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 10:37.