Uncaught TypeError: Cannot read property 'top' of undefined

Tags:    javascript jquery

Hej :)

Jeg er igang med en menu til et portfolie, men har et problem med koden.
Jeg får fejlen "Uncaught TypeError: Cannot read property 'top' of undefined", når jeg prøver at klikke på den første menu knap.

Fold kodeboks ind/udHTML kode 


Fold kodeboks ind/udHTML kode 


Fold kodeboks ind/udJScript kode 


På forhånd tak for hjælpen!



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Som der står: property "top" findes ikke "undefined" der kommer ud af .offset(). Det burde være lige til at forstår. :)
At .offset() returnerer "undefined" og ikke objekt kan skyldes at $('.content-item:nth-child('+$(this).index()+')') ikke findes. Og det er så det du må finde ud af. Det kan være grundet forkert anvendelse af .index(), eller måske forkert css-query.

Da du skriver det hele på en linje, er det svært at give bedre bud. Du må derfor debugge.



Som der står: property "top" findes ikke "undefined" der kommer ud af .offset(). Det burde være lige til at forstår. :)
At .offset() returnerer "undefined" og ikke objekt kan skyldes at $('.content-item:nth-child('+$(this).index()+')') ikke findes. Og det er så det du må finde ud af. Det kan være grundet forkert anvendelse af .index(), eller måske forkert css-query.

Da du skriver det hele på en linje, er det svært at give bedre bud. Du må derfor debugge.


Tak for svaret :) Jeg har prøvet omkring 5-6 andre muligheder, for at selecte det første element, men den siger bare den samme fejl. Det virker fint hvis det ikke er det første element :)

Hvis jeg bruger :first selectoren, scroller den ned til andet element (index 1).



Hvad med $('.content-item').get(0) ?

Alle index starter ved nul... 1 er lig med nr. 2 element. I programmering betyder 1, at der allerede har været en iteration.



Hvad med $('.content-item').get(0) ?

Alle index starter ved nul... 1 er lig med nr. 2 element. I programmering betyder 1, at der allerede har været en iteration.


Har nu prøvet dette, og det virker ikke:

Fold kodeboks ind/udJScript kode 


Får fejlen "Uncaught TypeError: Object #<HTMLDivElement> has no method 'offset'".

EDIT:
Har endelig fået det til at virke! Jeg fandt ud af, at den faktisk scollede til det rigtige afsnit, det var bare fordi jeg havde en header med position: fixed; så jeg manglede at lige at fjerne dens højde :)

Tak for hjælpen.



Indlæg senest redigeret d. 01.02.2014 18:47 af Bruger #15853
t