Warum erhalte ich die Meldung "Uncaught TypeError: Cannot read property" Fehler mit dieser variable?

In dieses jsFiddle ich habe zwei Variablen, die würden entweder undefined oder null. Das script funktioniert, wenn die erste variable ist initialisiert, aber nicht, wenn die zweite verwendet wird. Sie können dies testen, indem auskommentieren und das script ausgeführt.

Dies ist der code:

var test = $('.not-here').height(); //works with this variable
var test2 = $('.also-not-here').offset().top; //doesn't work with this

$('#output').append('yeah');

Warum habe ich dieses problem und wie bekomme ich es?

  • Sie können nicht de-Referenz etwas, das nicht definiert ist. Das ist alles dort ist zu ihm. Wenn ein jQuery Selektor gibt keine Elemente, jQuery, dennoch gibt eine leere Menge (also etwas, das IST definiert). Wenn Sie anrufen .offset() auf eine leere Menge, so ist undefiniert. Also... Man kann nicht eine Methode aufzurufen, die auf die return-Wert (offset) in diesem Fall.
  • Uncaught TypeError: Cannot read property 'top' von null
  • Das Problem ist, dass $('.also-not-here') ist eigentlich eine (leere) Liste, in der Erwägung, dass $('.also-not-here').offset() ist wirklich undefined.
  • Oder um es anders auszudrücken, jQuery schützt Sie von undefined und null, aber sobald man sich von seinem Schutz, Sie müssen mit sich selbst.
InformationsquelleAutor shrewdbeans | 2013-04-17
Schreibe einen Kommentar