Wieso zeigt mir die Konsole 'undefined' an?
Ich hab eine Variable 'navplace' und die soll die Höhe von #nav sein. Diese soll mir die Konsole dann anzeigen. Doch da kommt immer wieder Error raus, die Variable sei nicht definiert. Wenn ich das gleiche per Hand in die Konsole eintippe, kommt ein Wert raus (475.5), wieso?
Wieso klappt es im script nicht, aber in der Konsole schon?
5 Antworten
pack das ganze mal in ein
$(function() {
//Dein code hier
});
vermutlich ist das element zu dem zeitpunkt in dem du es der variable zuweist noch nicht geladen. was du in den block da oben packst, wird aber erst aufgeführt wenn die seite geladen wurde.
Laut https://wiki.selfhtml.org/wiki/JavaScript/Operatoren/Operatorenrangfolge steht = in der Rangfolge auf Platz 2, der .-Operator auf 16.
Ich würde mal Klammern setzen.
Ich würde mal Klammern setzen.
Dir ist aber schon aufgefallen, dass in der von dir verlinkten Liste die Klammern auf Platz 17 stehen?
So wie ich die Liste verstehe (und das entspricht auch meinen bisherigen Erfahrungen mit JS), ist die "Rangstufe" eher so zu verstehen, dass größere Zahl = größere Priorität.
nur dass eine höhere zahl höhere priorität bedeuted.... wurde mich stark wundern wenn hier strich vor punkt gerechnet wird.
Es war nicht drin, mal "weitere Informationen" anzuklicken? Anscheinend ist "offset" dort im Kontext unbekannt.
Könnte es evtl. sein, dass der Code, der den Fehler auslöst ausgeführt wird, bevor die Seite komplett geladen ist?
Beispiel:
<html>
<head>
let navplace = document.getElementById('nav').offsetTop;
console.log(navplace);
</head>
<body>
<nav id="nav"><a href="about:blank">foobar</a></nav>
</body>
</html>
führt nicht selten zu einem Fehler, da u.U. versucht wird, auf ein Element zuzugreifen, das noch gar nicht geladen ist.
jquery VOR deinem script eingebunden?