Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Tiempo de intervalo, y scroll hacia abajo

Estas en el tema de Tiempo de intervalo, y scroll hacia abajo en el foro de Frameworks JS en Foros del Web. Este es todo mi script para mi CHAT, cuando hago un Cita: setInterval(traerMensajes(),2000) Este no es llamado cada 2 segundos.... y nose porque, pero al ...
  #1 (permalink)  
Antiguo 02/11/2010, 07:37
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Tiempo de intervalo, y scroll hacia abajo

Este es todo mi script para mi CHAT, cuando hago un
Cita:
setInterval(traerMensajes(),2000)
Este no es llamado cada 2 segundos.... y nose porque, pero al presionar el boton y llamo a esa funcion este si es llamado, ah tambien me pasalo mismo con el
setTimeOut, este no se ejecuta pasado x Segundos, sino lo hace al instante...

Ok y mi otra duda es, como haria yo para mostrar el scroll de un div hacia abajo siempre... ?

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.    
  3.     var contenido;
  4.    
  5.     function traerMensajes()
  6.     {
  7.         var mensaje = '';
  8.        
  9.         $.post('controller/chat.controller.php',{action: 'traerMensajes'},function(data){
  10.            
  11.             //Limpiamos previamente
  12.             $(".mensajes").html('');
  13.             $(".mensajes").html(data);
  14.         })
  15.        
  16.         scrollDown();
  17.     }
  18.    
  19.     function scrollDown() {
  20.         $("#txtMensaje").animate({ scrollTop: $("#chatbox").attr("scrollHeight") - 20 }, 'normal');
  21.     }
  22.    
  23.     //Validar escritura
  24.     $("#txtMensaje").live('keydown',function(){
  25.  
  26.         if($(this).val().length >= 200)
  27.             $(this).val(contenido);
  28.         else
  29.             contenido = $(this).val();
  30.     })
  31.  
  32.     //Enviar mensaje
  33.     $("#btnEnviar").live('click',function(){
  34.        
  35.         if($("#txtMensaje").val().length <= 10)
  36.         {
  37.             alert("El mensaje es demasiado es corto para ser enviado, intentelo de nuevo");
  38.             $("#txtMensaje").focus();
  39.         }          
  40.         else
  41.         {
  42.             escribirMensaje();
  43.             esconderBoton(false);
  44.             ajaxLoader(true);
  45.         }
  46.     })
  47.    
  48.     function esconderBoton(x)
  49.     {
  50.         switch (x)
  51.         {
  52.             case true:
  53.                 $("#btnEnviar").show();
  54.                 break;
  55.            
  56.             case false:
  57.                 $("#btnEnviar").hide();
  58.                 break; 
  59.         }
  60.     }
  61.    
  62.     function ajaxLoader(x)
  63.     {
  64.         switch (x)
  65.         {
  66.             case true:
  67.                 $("#ajaxLoader_chat").show();
  68.                 break;
  69.            
  70.             case false:
  71.                 $("#ajaxLoader_chat").hide();
  72.                 break; 
  73.         }
  74.     }
  75.    
  76.     function escribirMensaje()
  77.     {
  78.         $.post('controller/chat.controller.php',{action: 'escribirMensaje',txtMensaje: $('#txtMensaje').val()},function(){
  79.             $("#txtMensaje").val('');
  80.             traerMensajes();
  81.             ajaxLoader(false);
  82.         })
  83.        
  84.         setTimeout(esconderBoton(true), 2000);
  85.     }
  86.    
  87.     setInterval(traerMensajes(),2000);
  #2 (permalink)  
Antiguo 02/11/2010, 08:22
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Tiempo de intervalo, y scroll hacia abajo

Las dos funciones que citas son muy quisquillosas. Por ejemplo, si escribis Out con mayusculas no te va a funcionar, y se va a disparar cualquier otra cosa. Es con minuscula: setTimeout. Luego, la funcion va entre comillas (probalo de diferentes maneras!)
  #3 (permalink)  
Antiguo 02/11/2010, 08:50
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Tiempo de intervalo, y scroll hacia abajo

saca la función que tenés en el setinterval fuera del ready
y para el scroll como tomas el tamaño ponelo en la funcion de callback del post


algo como

Código Javascript:
Ver original
  1. <html>
  2.     <head>
  3.         <title>Ejemplon</title>
  4.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  5.     </head>
  6.         <script type="text/javascript">
  7.             $( function (){
  8.                 traerMensajes();
  9.                 setInterval("traerMensajes()",2000);
  10.             });
  11.  
  12.             function traerMensajes(){
  13.                 $.post(
  14.                     'algunaurl',
  15.                       function(data) {
  16.                           $('#mensajes').append( data );
  17.                           $("#mensajes").animate({ scrollTop: $("#mensajes").attr("scrollHeight") }, 'normal');
  18.                       }
  19.                 );
  20.             };
  21.  
  22.         </script>
  23.         <style>
  24.             #mensajes{height:100px; width:150px; overflow:scroll}
  25.         </style>
  26.     <body>
  27.     <div id="mensajes">
  28.     </div>
  29.     </body>
  30. </html>
  #4 (permalink)  
Antiguo 02/11/2010, 13:37
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 46
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Tiempo de intervalo, y scroll hacia abajo

Si pones los paréntesis (sin comillas) la función se ejecuta al instante, tienes que ponerlo sin los paréntesis:

Código Javascript:
Ver original
  1. setInterval(traerMensajes,2000)
__________________
Quizá te interese mi Tutorial de JavaScript Orientado a Objetos.

Nuevo: CSS Floats: Tutorial Visual
  #5 (permalink)  
Antiguo 02/11/2010, 15:08
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Tiempo de intervalo, y scroll hacia abajo

Que funciones dificiles que son!

Lo que dice Dany es tal cual. Las funciones se declaran fuera del ready...

Etiquetas: abajo, intervalo, scroll
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 20:09.