Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Parar de ejecutar el script

Estas en el tema de Parar de ejecutar el script en el foro de Javascript en Foros del Web. Hola tengo un botón que al darle sube hasta arriba. El problema es que no para, quiero decir al llegar arriba luego no puedo volver ...
  #1 (permalink)  
Antiguo 30/07/2014, 10:35
Avatar de Germano6  
Fecha de Ingreso: mayo-2013
Mensajes: 61
Antigüedad: 11 años, 6 meses
Puntos: 0
Parar de ejecutar el script

Hola tengo un botón que al darle sube hasta arriba. El problema es que no para, quiero decir al llegar arriba luego no puedo volver a bajar porque sigue subiendo.
Este es el código:
Código HTML:
Ver original
  1.     <script type="text/javascript">
  2.     function scrollToTop() {
  3.     var timeOut;
  4.     var bajado = document.body.scrollTop || document.documentElement.scrollTop;
  5.     if ( bajado !=0){
  6.         window.scrollBy(0, bajado/-10);
  7.         timeOut=setTimeout('scrollToTop()',10);
  8.     }
  9.     else clearTimeout(timeOut);
  10. };
  11.     </script>
  12. </head>
  13. <body style="height: 2000px; background: linear-gradient(to top, black, white);">
  14.    
  15. <a href="" style="position:fixed;" onclick="scrollToTop();return false" id="subir">Subir</a>
  16. </body>
  17. </html>
El problema aparece cuando pongo window.scrollBy(0, bajado/-10) en vez de window.scrollBy(0, -30) porque ahí si que funciona bien.
¿Por qué? ¿Tiene solución?
__________________
Simple principiante. Déjame las cosas claras y no me preguntes.
  #2 (permalink)  
Antiguo 30/07/2014, 12:30
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Parar de ejecutar el script

Quizá en algún momento el valor del scroll sea menor que cero, con lo cual seguirá siendo diferente a dicho valor y por eso la función se sigue ejecutando. Yo lo haría así:

Código Javascript:
Ver original
  1. function scrollToTop() {
  2.     var scroll = window.scrollY;
  3.  
  4.     if (scroll){
  5.         var aux = scroll,
  6.             interval = setInterval(function(){
  7.                 aux -= 100;
  8.                 window.scroll(0, aux);
  9.                 if (aux <= 0) clearInterval(interval);
  10.             }, 1);
  11.     }
  12. }

De este modo, tomo el valor desplazado por la barra de desplazamiento y si este es mayor a cero, asigno dicho valor a una variable auxiliar, a la cual le iré disminuyendo el valor asignado de 100 en 100 y será su valor actualizado el que usaré para desplazar a la barra hacia la parte superior. Esto se repetirá cada milésima de segundo hasta que el valor de la variable auxiliar sea menor o igual a cero, en ese momento se termina el ciclo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, html, parar
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 08:18.