Uncaught TypeError: Cannot read property 'top' of undefined
mari0n
-
mari0n -
mari0n -
Bonjour,
J'utilise le code suivant qui me permet d'ajouter une class à un élément du menu lorsque celui-ci est au niveau de l'écran de l'internaute :
Il fonctionne très bien, mais dans l'inspecteur chrome, j'ai l'erreur suivante :
"Uncaught TypeError: Cannot read property 'top' of undefined"
Savez-vous pourquoi cette erreur, alors que tout fonctionne bien ?
J'utilise le code suivant qui me permet d'ajouter une class à un élément du menu lorsque celui-ci est au niveau de l'écran de l'internaute :
$(document).ready(function () {
$(document).on("scroll", onScroll);
});
function onScroll(event){
var scrollPos = $(document).scrollTop();
$('#nav-main a').each(function () {
var currLink = $(this);
var refElement = $(currLink.attr("href"));
if (refElement.position().top <= scrollPos +55 && refElement.position().top + refElement.height() > scrollPos +55) {
$('#mnav-main ul li a').removeClass("active");
currLink.addClass("active");
}
else{
currLink.removeClass("active");
}
});
}
Il fonctionne très bien, mais dans l'inspecteur chrome, j'ai l'erreur suivante :
"Uncaught TypeError: Cannot read property 'top' of undefined"
Savez-vous pourquoi cette erreur, alors que tout fonctionne bien ?
3 réponses
-
bonjour.
A mon avis tu doit te tromper, ton code ne fonctionne pas.
A partir de l'erreur que tu as, ce code js plante et ne vas pas plus loin que l'erreur.
cette ligne n'est pas normale pour moi$(currLink.attr("href"));
elle appel un élément qui n'existe pas et donc qui n'as pas de position.
Tu devrais changer ta conditionif (refElement.position().top <= scrollPos +55 && refElement.position().top + refElement.height() > scrollPos +55) {
enif (currLink.position().top <= scrollPos +55 && currLink.position().top + currLink.height() > scrollPos +55) {-
Je doit préciser que j'ai importé la librairie JQuery :
https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js
Sans cela, le code ci-dessus ne fonctionne pas. Sinon il fonctionne bien sur mon site, que ce soit sur Chrome ou sur Safari, par contre dès que je scroll, la quantité d'erreurs augmente, celles affichées sont toute les mêmes : Uncaught TypeError: Cannot read property 'top' of undefined
-