Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema en consola

Estas en el tema de Problema en consola en el foro de Javascript en Foros del Web. Hola Tengo una función para efecto de scroll en un archivo scroll.js, que incluye esta línea 14: Código: scrollTop: $(target).offset().top Luego he colocado una función ...
  #1 (permalink)  
Antiguo 25/10/2019, 07:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 883
Antigüedad: 14 años
Puntos: 8
Problema en consola

Hola

Tengo una función para efecto de scroll en un archivo scroll.js, que incluye esta línea 14:

Código:
scrollTop: $(target).offset().top
Luego he colocado una función para cambiar el contenido de unos enlaces así:

Código:
var elements = document.getElementsByClassName('menus');
for (var i = 0; i < elements.length; i++) {
elements[i].setAttribute("href", "#");
}
Es bien fácil y todo funciona bien. Pero luego miras la consola de js y salta este problema:

Código:
scroll.js:14 Uncaught TypeError: Cannot read property 'top' of null
at HTMLAnchorElement.jump (scroll.js:14)
Lo está causando la función para el cambio de link porque cuando la elimino desaparece el error.

Aún así, todo funciona correctamente. O igual no y luego falla en algún dispositivo.

¿Me podéis decir qué es esto?
  #2 (permalink)  
Antiguo 25/10/2019, 09:29
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.543
Antigüedad: 11 años, 8 meses
Puntos: 1084
Respuesta: Problema en consola

Como el error dice ocurre porque en X momento el valor que intetas recuperar no existe, esto lo solventas validando previamente que exista

no soy tan diestro en jquery pero creo que seria algo así
Código Javascript:
Ver original
  1. let top = $(target).offset() ? $(target).offset().top : 0;
  2. scrollTop: top

o quizás con
Código Javascript:
Ver original
  1. let top = $(target).offset().top || 0;
  2. scrollTop: top
  #3 (permalink)  
Antiguo 25/10/2019, 17:55
 
Fecha de Ingreso: noviembre-2005
Mensajes: 883
Antigüedad: 14 años
Puntos: 8
Respuesta: Problema en consola

Funciona, pero en ambos casos arroja este error en consola:

Código:
Uncaught SyntaxError: Unexpected identifier
En cualquier caso, gracias por responder.
  #4 (permalink)  
Antiguo 04/11/2019, 07:33
 
Fecha de Ingreso: abril-2011
Mensajes: 42
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Problema en consola

Si $(target).offset() devuelve null o undefined será porque el elemento "target" (que no sabemos nada de él porque no lo has mostrado) es o bien invisible (visibilty: hidden), o directamente no existe en el documento.

Igual te referías a $(event.target), que es bien distinto:

https://api.jquery.com/event.target/

En resumen, verifica cuál es el valor de esa variable target.
  #5 (permalink)  
Antiguo 07/11/2019, 07:56
 
Fecha de Ingreso: noviembre-2005
Mensajes: 883
Antigüedad: 14 años
Puntos: 8
Respuesta: Problema en consola

El problema es como dices. Utilicé este script en otra web donde había un "top". Luego lo traje a mi muevo proyecto sin quitarlo.

Lo quité y ya funciona.

Un saludo y gracias.



La zona horaria es GMT -6. Ahora son las 15:19.