Jquerry : TypeError: $(...).offset(...) is undefined - HTML/CSS - Programmation
Marsh Posté le 30-12-2015 à 19:50:27
désolé d'up aussi vite, mais ca m'ennuie vraiment cet histoire :3
Marsh Posté le 30-12-2015 à 20:02:45
A vue d'oeil tu appelles ton offset alors que la page n'est pas encore chargée :
1 - tu places ton code dans une fonction " $(document).ready(function() {}); "
2 - bienvenue dans le monde de la programmation où tu dois systématiquement vérifier que tes variables existent avant de les utiliser " var menu = $('#menu').offset().top;
if (menu.length) { //ton code } "
3 - <script language="JavaScript" type="text/javascript" src="file://CUsers/Ehones4/Desktop/jQuery v2.1.4.js"></script>
Est une horreur car "language" n'est plus utilisé depuis un bail, de plus le type est tout le temps du JS donc t'es pas obligé de le mettre (HTML5)
EDIT 4 - Tu as un fichier CSS mais pourtant tu utilises une balise "style" je me demande bien pourquoi?
Code :
|
Marsh Posté le 30-12-2015 à 20:18:52
Merci !
J ai enlever le style inutile et j'ai corrigé le script.
La console ne m'indique plus d erreur, mais le script ne fonctionne toujours pas
Marsh Posté le 31-12-2015 à 04:04:30
Oui, je t'ai juste aidé à comprendre ton erreur. Maintenant tu rajoutes une classe à ta balise "menu" mais elle n'existe même pas dans ton CSS
Il ne suffit pas de copier/coller du code si tu me comprends pas ce que tu fais
regarde par ici : http://manos.malihu.gr/jquery-floating-menu/
Marsh Posté le 31-12-2015 à 08:17:10
caps lock a écrit :
|
1- Pas besoin dans son cas de le mettre dans un document.ready si son code est à la fin de la page
2- C'est une erreur courante de vouloir tester le .length d'un objet jquery, étant donné que jquery s'en fout et que tu aies 0 ou N élément dans la collection jquery il n'y a pas besoin de faire un if($jQueryObject.length).
Marsh Posté le 31-12-2015 à 12:18:27
caps lock a écrit : Oui, je t'ai juste aidé à comprendre ton erreur. Maintenant tu rajoutes une classe à ta balise "menu" mais elle n'existe même pas dans ton CSS |
Dans le CSS, je dois creer #menu.fixed c'est bien ca?
Marsh Posté le 01-01-2016 à 00:27:35
gatsu35>
1 - on ne sait pas comment il a bidouillé sa mise en page de code
2 - oui très bonne remarque!
ehones>
Oui tout à fait !
Le HTML est le fond, le CSS la forme, puis le JavaScript te permet d'interagir avec le document.
Ici quand tu scroll sur ta page, tu rajoutes ou tu enlèves une classe à ton menu, il faut donc qu'elle existe dans ton css
Marsh Posté le 01-01-2016 à 23:52:39
Salut, et bonne année !
J ai réussi a faire fonctionner le script, mais il y a un détail qui me chiffonne encore
En fait, lorsque j atteints le point ou le menu devient fixed, la page scroll brutalement vers le bas, d'une cinquentaine de pixel.
Je trouve pas ca très esthétique, et je ne comprend pas pourquoi cela fait ca.
Si vous pouviez me donner une piste pour résoudre ce pb
Le CSS
Code :
|
Le JS
Code :
|
Marsh Posté le 02-01-2016 à 00:13:59
La réponse est simple, comme tu supprime le menu du flux, alors le flux remonte d'autant de la hauteur de pixel. Pour corriger ton problème tu pourrais rajouter un padding-top ou rajouter un div vide qui ferait la hauteur du menu à la place.
Marsh Posté le 02-01-2016 à 01:02:55
Un padding top? C'est l'espacement interieur du haut d'un div?
J ai testé en le rajoutant dans menu.fixed, ca agrandit la div, mais ya toujours le flux qui remonte.
Pour la deuxieme méthode, je doit faire apparaitre le div uniquement lorsque je scroll non?
Marsh Posté le 02-01-2016 à 01:11:05
ehones a écrit : Un padding top? C'est l'espacement interieur du haut d'un div? |
J'ai dis un padding-top sur le parent de menu Car tu enleve le menu du flux, donc tu dois ajouter quelque chose sur le parent ou le body pour éviter cette rémontée.
Mais je pense qu'il y a plus simple.
Au lieu d'ajouter une classe sur menu.fixed, ajoute une classe "menu-fixed" sur le body, ainsi tu pourras modifier ce que tu veux au niveau CSS :
Code :
|
devient
Code :
|
et tu rajoutes ça dans ta css :
Code :
|
nettoie un peu ta CSS, tu peux supprimer les 2 premières lignes de box-shadow, elles ne servent à rien, seule la dernière sera prise en compte.
et ton width doit avoir des unités, dont met 1000px au lieu de 1000.
Marsh Posté le 02-01-2016 à 01:28:16
Ok merci beaucoup
Mais du coup, faut corriger le script ici?
Code :
|
Marsh Posté le 02-01-2016 à 01:30:37
ehones a écrit : Ok merci beaucoup
|
remplace menu par $('#body')
Marsh Posté le 02-01-2016 à 01:38:11
Je dois oublier quelque chose, ca fonctionne pas
Code :
|
Code :
|
Marsh Posté le 30-12-2015 à 16:36:56
Bonjour a tous.
Je me suis lancé dans la création d'un site web, et je suis totalement novice.
Je bloque sur un truc qui va tres certainement vous paraitre évident ^^
J ai un petit script pour que le div menu suive le scroll a partir d'un certain point. D'apres mes recherche, c'est pas faisable avec du CSS donc je me suis tourné vers d autres moyens.
J ai une erreur : TypeError: $(...).offset(...) is undefined a la ligne 5 "var menu = $('#menu').offset().top;"
Si une ame charitable pouvait me dépatouiller de cette galere ! ^^
Le Jquery :
le CSS :
l'HTML :
Message édité par ehones le 30-12-2015 à 17:06:50