elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  scrollIntoview
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: scrollIntoview  (Leído 7,736 veces)
jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
scrollIntoview
« en: 25 Mayo 2016, 12:48 pm »

La cosa es que quiero que cuando el div se actualice con ajaz, el scroll baje abajo del todo del div: He puesto este codigo  pero me dice: ncaught TypeError: Cannot read property 'scrollIntoView' of null; Gracias de antemano

Código
  1. $(function () {
  2.    $('#boton').on('click', function () {
  3.        var mensaje = $('#mensaje').val(),
  4.            ajax    = $.post('mensaje.php?op=1', { mensaje: mensaje } );
  5.  
  6.        ajax.done(function() {
  7.            var content = $.get('mensaje.php?op=2');
  8.            $('#contenedor').empty().append( content );
  9.            $('#mensaje').val('');
  10.            document.getElementById('final').scrollIntoView(true);
  11.        });
  12.    });
  13. });
  14.  
  15. $(function () {
  16.    $('#mensaje').keydown(function (event) {
  17.       if(event.which==13 || event.keycode==13) {
  18.        var mensaje = $('#mensaje').val(),
  19.            ajax    = $.post('mensaje.php?op=1', { mensaje: mensaje } );
  20.  
  21.        ajax.done(function() {
  22.            var content = $.get('mensaje.php?op=2');
  23.            $('#contenedor').empty().append( content );
  24.            $('#mensaje').val('');
  25.            document.getElementById('final').scrollIntoView(true);
  26.  
  27.        });
  28. }
  29.    });
  30.  
  31.  
  32. });
  33.  


la pagina:

Código
  1.        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
  2.        <script language="javascript" type="text/javascript" src="enviar.js"></script>
  3. <link rel="stylesheet" type="text/css" href="chat.css">
  4.        <link rel="stylesheet" type="text/css" href="inicio.css">
  5. <script src="ajax.js"></script>
  6. </head>
  7. <body background="fondos/fondo-inicio.jpg"">
  8. <ul>
  9.  <li><a class="active" href="inicio.php">Inicio</a></li>
  10.  <li><a href="paginaad.php">Administracion</a></li>
  11.  <li><a href="comentarios.php">Reporta</a></li>
  12.  <ul style="float:right;list-style-type:none;">
  13.    <li><a href="#about">Sobre mi</a></li>
  14.    <li><a href="salir.php">Logout</a></li>
  15.  </ul>
  16. </ul>
  17. <div id="contenedor"><span id="final"></span>
  18. </div>
  19. <input type="text" id="mensaje" name="mensaje" />
  20. <button id="boton">Enviar</button>
  21.  
  22. </body>
  23. </html>
  24.  


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: scrollIntoview
« Respuesta #1 en: 25 Mayo 2016, 19:58 pm »

Código
  1. $('html, body').animate({scrollTop: $( $( '#final' ) ).offset().top}, 1000);

El 1000 es el tiempo de transicción que dura la animación, reducelo o aumentalo a tu gusto.

Yo no mezclaria javascript con JQuery, si vas a trabajar con un lenguaje ciñete con ese y será más facil entender el código y encontrar los errores. En este caso con más razón, estás cargando una libreria entera (JQuery) que te facilita la vida.

Recuerda "Write less, do more"  ;)


Por cierto, si una pregunta ya la tienes respondida y se ha solucionado tu problema, indicalo cambiando el icono del primer mensaje y responde para que sepamos que ya está solucionado. A parte, un gracias nunca está de más. (tienes varias preguntas aun abiertas y no has dicho nada...)


En línea

jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: scrollIntoview
« Respuesta #2 en: 26 Mayo 2016, 09:42 am »

Código
  1. $('html, body').animate({scrollTop: $( $( '#final' ) ).offset().top}, 1000);

Compañero ya probe de todo, tu funcion, y otras y ninguna funciona.. porque..
Saludos
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: scrollIntoview
« Respuesta #3 en: 26 Mayo 2016, 13:24 pm »

A mí me funciona perfectamente, mira que es lo que estás haciendo mal. ¿Lo has puesto dentro de un document ready? ¿Donde tenias antes tu código?
En línea

jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: scrollIntoview
« Respuesta #4 en: 27 Mayo 2016, 09:18 am »

tengo el siguente codigo:

Código
  1. $(document).ready(function(){
  2. $("#mensaje").keydown(function(event){
  3. if(event.which==13 || event.keycode==13) {
  4. $('html, body').animate({scrollTop: $( $( '#final' ) ).offset().top}, 1000);
  5. }
  6. });
  7. });
  8.  

Pero cuando le doy intro solo me dice que no se puede leer top de un elemto indefinido.

Y me aclaro, lo que quiero es que el scroll  que esta en el div baje, no el de la pagina.

Saludos
« Última modificación: 27 Mayo 2016, 11:31 am por jalbtercero » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: scrollIntoview
« Respuesta #5 en: 27 Mayo 2016, 15:13 pm »

El scroll que quieres que baje es lo de menos, lo cambias donde dice 'html, body' cambias por el elemento div y será ese scroll el que se anime (o eso creo :P)

Pruebalo con algo más simple como un simple click y a ver si funciona como quieres, luego le añades ese if y así te aseguras que el scroll funciona.
En línea

jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: scrollIntoview
« Respuesta #6 en: 27 Mayo 2016, 23:15 pm »

No compañero lo siento pero no funciona me da el mismo error:

codigo:
Código
  1. $(document).ready(function(){
  2. $("#boton").on('click',function(){
  3. $('div').animate({scrollTop: $( $( '#final' ) ).offset().top}, 1000);
  4. });
  5. });
  6.  

Añado codigo de la pagina:

Código
  1.        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
  2.        <script language="javascript" type="text/javascript" src="enviar.js"></script>
  3. <link rel="stylesheet" type="text/css" href="chat.css">
  4.        <link rel="stylesheet" type="text/css" href="inicio.css">
  5. <script src="ajax.js"></script>
  6. </head>
  7. <body background="fondos/fondo-inicio.jpg"">
  8. <ul>
  9.  <li><a class="active" href="inicio.php">Inicio</a></li>
  10.  <li><a href="paginaad.php">Administracion</a></li>
  11.  <li><a href="comentarios.php">Reporta</a></li>
  12.  <ul style="float:right;list-style-type:none;">
  13.    <li><a href="#about">Sobre mi</a></li>
  14.    <li><a href="salir.php">Logout</a></li>
  15.  </ul>
  16. </ul>
  17. <div id="contenedor"><span id="final"></span>
  18. </div>
  19. <input type="text" id="mensaje" name="mensaje" />
  20. <button id="boton">Enviar</button>
  21.  
  22. </body>
  23. </html>
  24.  
« Última modificación: 27 Mayo 2016, 23:28 pm por jalbtercero » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: scrollIntoview
« Respuesta #7 en: 27 Mayo 2016, 23:42 pm »

Si que funciona: mira que es lo que estás haciendo mal: https://jsfiddle.net/x030ud26/
« Última modificación: 28 Mayo 2016, 00:12 am por gAb1 » En línea

jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: scrollIntoview
« Respuesta #8 en: 27 Mayo 2016, 23:54 pm »

Código
  1. $(document).ready(function(){
  2. ('#boton').on('click', function(event) {
  3.  
  4.    var target = $( $(this).attr('href') );
  5.  
  6.    if( target.length ) {
  7.        event.preventDefault();
  8.        $('#contenedor').animate({
  9.            scrollTop: target.offset().top
  10.        }, 1000);
  11.    }
  12.  
  13. });
  14. });
  15.  

que he echo mal?
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: scrollIntoview
« Respuesta #9 en: 28 Mayo 2016, 00:06 am »

Esto debería funcionar. Por cierto, no necesitas usar varias veces el document ready ( $(function () {}); es el equivalente ).

Código
  1. $(function () {
  2.  
  3.    function myFunction() {
  4.  
  5.        var mensaje = $('#mensaje').val(),
  6.            ajax    = $.post('mensaje.php?op=1', { mensaje: mensaje } );
  7.  
  8.        ajax.done(function() {
  9.            var content = $.get('mensaje.php?op=2');
  10.            $('#contenedor').empty().append( content );
  11.            $('#mensaje').val('');
  12.            $('div').animate({scrollTop: $( $( '#final' ) ).offset().top}, 1000);
  13.        });
  14.  
  15.    }
  16.  
  17.    $('#boton').on('click', myFunction());
  18.  
  19.    $('#mensaje').keydown(function (event) {
  20.        if (event.which==13 || event.keycode==13) {
  21.            myFunction();
  22.        }
  23.    });
  24.  
  25. });
« Última modificación: 28 Mayo 2016, 00:13 am por gAb1 » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines