Foros del Web » Programando para Internet » Javascript »

No hay manera de añadir un efecto fade in

Estas en el tema de No hay manera de añadir un efecto fade in en el foro de Javascript en Foros del Web. Hola amigos como estais, Vereis, tengo este codigo "comet" que recupera de la BD entradas conforme se van guardando y funciona bien, la cosa es ...
  #1 (permalink)  
Antiguo 02/05/2012, 16:30
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
No hay manera de añadir un efecto fade in

Hola amigos como estais,

Vereis, tengo este codigo "comet" que recupera de la BD entradas conforme se van guardando y funciona bien, la cosa es que al mostrarlas noticias va recuperando las muestra rapidamente y me gustaria añadirle un efecto de fade in.

He intentado adaptar el codigo para hacerlo posible pero por mas que pruebo es imposible no funiona, a ver si alguien sabe como se podria añadir.

El javascritp:

Código Javascript:
Ver original
  1. var xmlhttp = function()
  2.     {
  3.         var a;try{a = new XMLHttpRequest();}
  4.         catch(e){try{a = new ActiveXObject('Msxml2.XMLHTTP');}
  5.         catch(e){try{a = new ActiveXObject('Microsoft.XMLHTTP');}
  6.         catch(e){alert('Your browser doesn\'t support ajax');a=false;}
  7.         }}return a;
  8.     };  
  9.     window.onload = function()
  10.     {
  11.         var a = new comet();
  12.     };  
  13.     var comet = function()
  14.     {
  15.         var a = new xmlhttp();
  16.         a.open('post',window.location+"?"+Math.random()+"="+Math.random(), true);
  17.         a.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  18.         a.onreadystatechange = function()
  19.         {
  20.             if(a.readyState == 4)
  21.             {
  22.                 document.getElementById('content').innerHTML = a.responseText;
  23.                 window.setTimeout(function(){
  24.                     a = new comet();                    
  25.                 },1000);
  26.                
  27.             }
  28.         };
  29.         a.send('algo=algo');                
  30.     };


y el php

Código PHP:
if($_POST)   

    
set_time_limit(0);     
    
header("Edge-control: no-store"); 
    
sleep(1);  
    
session_start(); 
        
Tecnologia_noticias
    
if (!$conexion)
      {
      die(
'Could not connect: ' mysql_error());
      }

    
mysql_select_db("esfera10_rss"$conexion);



echo     
$notificaciones "select * from ".$_SESSION['Categoria'].'_noticias'." where id_noticia > '".$_SESSION["f"]."' order by id_noticia desc";                 
    
$notificaciones mysql_query($notificaciones$conexion);  
            while(
$rs=mysql_fetch_array($notificaciones))  
              {  
                echo 
$rs['titulo'].'<br>';                                                          
                            }
                            
    
mysql_close($conexion);    
    exit();

Código HTML:
Ver original
  1. <div id="content">
  2.  
  3.  
  4.         Cargando...
  5.                    
  6.  
  7.         </div>


Un saludo amigos

Última edición por franjgg; 02/05/2012 a las 16:38
  #2 (permalink)  
Antiguo 02/05/2012, 17:12
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

Perdona , con que queres usar el fadeIn y cuando ?
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #3 (permalink)  
Antiguo 02/05/2012, 17:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Hola chinanzio como estas,

Pues me gustaria que al mostrar la noticia en vez de hacerlo de golpe lo hiciese con el efecto fade,


Explico un poco el codigo la parte javascript es el comet que se encarga de recuperar la noticia cuando se guarda algo en la BD, el php es como la muestra con la consulta, y el html es el div que esta referido al javacritp para mostrarlas.

Un saludo amigo
  #4 (permalink)  
Antiguo 02/05/2012, 17:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

algo asi ?
content tiene que tener display: none;
Estoy suponiendo que usas jQuery

Código Javascript:
Ver original
  1. var xmlhttp = function() {
  2.     var a;
  3.     try {
  4.         a = new XMLHttpRequest();
  5.     } catch (e) {
  6.         try {
  7.             a = new ActiveXObject('Msxml2.XMLHTTP');
  8.         } catch (e) {
  9.             try {
  10.                 a = new ActiveXObject('Microsoft.XMLHTTP');
  11.             } catch (e) {
  12.                 alert('Your browser doesn\'t support ajax');
  13.                 a = false;
  14.             }
  15.         }
  16.     }
  17.     return a;
  18. };
  19. window.onload = function() {
  20.     var a = new comet();
  21. };
  22. var comet = function() {
  23.     var a = new xmlhttp();
  24.     a.open('post', window.location + "?" + Math.random() + "=" + Math.random(), true);
  25.     a.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  26.     a.onreadystatechange = function() {
  27.         if (a.readyState == 4) {
  28.             var content = document.getElementById('content');
  29.             content.innerHTML = a.responseText;
  30.             $(content).fadeIn("slow", function() {
  31.                 window.setTimeout(function() {
  32.                     a = new comet();
  33.                 }, 1000);
  34.             });
  35.         }
  36.     };
  37.     a.send('algo=algo');
  38. };
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #5 (permalink)  
Antiguo 02/05/2012, 17:48
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Hola amigo,

Si estoy usando JQuery, he implementado su codigo y ahora hace el efecto face cuando esta mostrando el echo de la consulta pero cuando recupera las noticias sigue mostrandolas de golpe.

Un saludo y mil gracias amigo
  #6 (permalink)  
Antiguo 02/05/2012, 17:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

Asi ?

Código Javascript:
Ver original
  1. var xmlhttp = function() {
  2.     var a;
  3.     try {
  4.         a = new XMLHttpRequest();
  5.     } catch (e) {
  6.         try {
  7.             a = new ActiveXObject('Msxml2.XMLHTTP');
  8.         } catch (e) {
  9.             try {
  10.                 a = new ActiveXObject('Microsoft.XMLHTTP');
  11.             } catch (e) {
  12.                 alert('Your browser doesn\'t support ajax');
  13.                 a = false;
  14.             }
  15.         }
  16.     }
  17.     return a;
  18. };
  19. window.onload = function() {
  20.     var a = new comet();
  21. };
  22. var comet = function() {
  23.     var a = new xmlhttp();
  24.     a.open('post', window.location + "?" + Math.random() + "=" + Math.random(), true);
  25.     a.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  26.     a.onreadystatechange = function() {
  27.         if (a.readyState == 4) {
  28.             var content = document.getElementById('content');
  29.             $(content).fadeOut("slow", function() {
  30.                 content.innerHTML = a.responseText;
  31.                 $(content).fadeIn("slow", function() {
  32.                     window.setTimeout(function() {
  33.                         a = new comet();
  34.                     }, 1000);
  35.                 });
  36.             });
  37.         }
  38.     };
  39.     a.send('algo=algo');
  40. };
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #7 (permalink)  
Antiguo 02/05/2012, 17:59
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Amigo ahora va un poco mejor, cuando recupera las noticias aparecen con el efecto fade in pero al segundo o dos segundos desaparece y vuleve aparecer, creo que es por que cada segundo la funcion donde esta el efecto fade esta comprobando si hay cambios en la BD.


un saludo y de nuevo mil gracias
  #8 (permalink)  
Antiguo 02/05/2012, 18:04
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

Hola, con estas lineas estas haciendo que al segundo se produzca un fadeOut y un fadeIn
Código Javascript:
Ver original
  1. window.setTimeout(function() {
  2.     a = new comet();
  3. }, 1000);

se me ocurre que podrías ejecutar los fade solo si hay cambios ... no termino de entender cual es el efecto que quieres
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #9 (permalink)  
Antiguo 02/05/2012, 18:06
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Si ese es el efecto que deseo amigo, que realice solo un fade in cuando hay cambios pero no realice el fade out, siento no explicarme bien


Un saludo y mil gracias
  #10 (permalink)  
Antiguo 02/05/2012, 18:15
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

Asi ?

Código Javascript:
Ver original
  1. var xmlhttp = function() {
  2.     var a;
  3.     try {
  4.         a = new XMLHttpRequest();
  5.     } catch (e) {
  6.         try {
  7.             a = new ActiveXObject('Msxml2.XMLHTTP');
  8.         } catch (e) {
  9.             try {
  10.                 a = new ActiveXObject('Microsoft.XMLHTTP');
  11.             } catch (e) {
  12.                 alert('Your browser doesn\'t support ajax');
  13.                 a = false;
  14.             }
  15.         }
  16.     }
  17.     return a;
  18. };
  19. window.onload = function() {
  20.     var a = new comet();
  21. };
  22. var comet = function() {
  23.     var a = new xmlhttp();
  24.     a.open('post', window.location + "?" + Math.random() + "=" + Math.random(), true);
  25.     a.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  26.     a.onreadystatechange = function() {
  27.         if (a.readyState == 4) {
  28.             var content = document.getElementById('content');
  29.             var cambios = true; // alguna condición con el response
  30.             if (cambios) {
  31.                 $(content).fadeOut("slow", function() {
  32.                     content.innerHTML = a.responseText;
  33.                     $(content).fadeIn("slow", function() {
  34.                         window.setTimeout(function() {
  35.                             a = new comet();
  36.                         }, 1000);
  37.                     });
  38.                 });
  39.             } else {
  40.                 window.setTimeout(function() {
  41.                     a = new comet();
  42.                 }, 1000);
  43.             }
  44.         }
  45.     };
  46.     a.send('algo=algo');
  47. };
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #11 (permalink)  
Antiguo 02/05/2012, 18:18
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Si amigo asi esta bien, pero cada segundo esta haciendo el efecto fade out, se podria quitar el fade out y dejar solo el fade in?
  #12 (permalink)  
Antiguo 02/05/2012, 18:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

Cita:
Iniciado por franjgg Ver Mensaje
Si amigo asi esta bien, pero cada segundo esta haciendo el efecto fade out, se podria quitar el fade out y dejar solo el fade in?
Si el div está visible el fadeIn no hace nada, por eso puse el fadeOut, para ocultar el div antes de hacer el fadeIn, se entiende ?
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #13 (permalink)  
Antiguo 02/05/2012, 18:28
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Si entendi amigo, la cosa es que ahora mismo lo que hace es mostrar la noticia con efecto fade in pero al segundo la esta desapareciendo lentamente y volviendo hacer fade in y asi como un buble infinito
  #14 (permalink)  
Antiguo 02/05/2012, 18:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

por eso había puesto la condición
Código Javascript:
Ver original
  1. var cambios = true; // alguna condición con el response, esta condición la tienes que implementar
  2. if (cambios) {

entonces, si hay cambios se producirán los efectos fadeOut y fadeIn, y si no hay cambios solo se volverá a crear un nuevo comet sin ocultar el div de la noticia
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #15 (permalink)  
Antiguo 02/05/2012, 18:40
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Ah vale vale, antes no habia entendido perdon,

Lo que intentaba hacer es igual que en facebook que cuando entra algo en la BD lo muestra sin refrescar, tal como lo tengo lo muestra bien la cosa es que lo desaparece tras un segundo y no quiero que desaparezca.


Un saludo amigo y de verdad muchas gracias por tu atencion
  #16 (permalink)  
Antiguo 03/05/2012, 06:00
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: No hay manera de añadir un efecto fade in

Amigo gracias por tu ayuda,

He conseguido que funcione parcialmente como quiero, con este codigo que me escribiste y el display none en el div conseguimos que muestre el efecto fade in pero solo en la primera noticia que recupera las demas las muestra de golpe.

Código Javascript:
Ver original
  1. var xmlhttp = function() {
  2.     var a;
  3.     try {
  4.         a = new XMLHttpRequest();
  5.     } catch (e) {
  6.         try {
  7.             a = new ActiveXObject('Msxml2.XMLHTTP');
  8.         } catch (e) {
  9.             try {
  10.                 a = new ActiveXObject('Microsoft.XMLHTTP');
  11.             } catch (e) {
  12.                 alert('Your browser doesn\'t support ajax');
  13.                 a = false;
  14.             }
  15.         }
  16.     }
  17.     return a;
  18. };
  19. window.onload = function() {
  20.     var a = new comet();
  21. };
  22. var comet = function() {
  23.     var a = new xmlhttp();
  24.     a.open('post', window.location + "?" + Math.random() + "=" + Math.random(), true);
  25.     a.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  26.     a.onreadystatechange = function() {
  27.         if (a.readyState == 4) {
  28.             var content = document.getElementById("content");
  29.                 content.innerHTML = a.responseText;
  30.             $(content).fadeIn("slow", function() {
  31.                
  32.                 window.setTimeout(function() {
  33.                     a = new comet();
  34.                 }, 1000);
  35.             });
  36.         }
  37.     };
  38.     a.send('algo=algo');
  39. };



un saludo amigo
  #17 (permalink)  
Antiguo 03/05/2012, 06:48
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: No hay manera de añadir un efecto fade in

Hola franjgg, es lógico que solo haga el fadeIn una sola vez con el código que estás usando. He visto que le sacaste el fadeOut y la condición de si había cambios.
Te lo explico una vez mas.
El fadeIn hace que algo que está invisible se vuelva paulatinamente visible y el fadeOut hace que algo que está visible se vuelva paulatinamente invisible.
Con el codigo que tenes ahora el <div id="content"/> se vuelve paulatinamente visible la primera vez y listo, las siguientes veces ya está visible, por eso el fadeIn no hace nada, por que ya está visible, no hay nada que hacer con el fadeIn, por eso puse el fadeOut, para que antes de usar el fadeIn el div esubiera invisible. El efecto que no querías (el de los fade cada un segundo) se controla con la condición que tenes que implementar.
Saludos
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online

Última edición por chinanzio; 03/05/2012 a las 07:08

Etiquetas: ajax, efecto, fade, funcion, html, php
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 03:05.