- Javascript-Fehler mit undefined variable

Habe ich ein problem, wenn eine Methode ist immer ein undefined variable Fehler, obwohl ich prüfen, ob die variable wird nicht definiert, bevor der Aufruf.

//Sets focus and text-select to the passed in element.
idNav.prototype.setFocusFromVar = function(r) {
    document.activeInputArea = r;   //my variable for tracking focus
    r.focus();    //error happens here (line 274 of idNav.js)
    r.select();
}

Der Fehler passiert bei der r.focus-Linie.

In beiden Orten, wo ich die Methode aufrufen kann, ich verwende ein Muster, das ähnlich der folgenden mit einer lokalen variable r in die Anrufer.

if (!r)
    return;

this.setFocusFromVar(r);

und doch der Fehler besteht weiterhin. Wenn r nicht null oder undefined ist, ist es ein input-element in eine Tabelle auf meiner Webseite.

Ich weiter r zu bekommen, ist nicht definiert in Zeile 274 idNav.js, was ist die r.focus-Linie. Alle Aufrufer der Methode sind in der gleichen js Datei als gut.

Was bin ich?

Dieser Fehler Auftritt zeitweise in Firefox habe ich noch nicht getestet, diese Fehler im IE.

EDTA:
r zeigte sich als ein nicht und den stack-trace des Fehlers zeigt:

setFocusFromVar()(undefined)IDNav.js (line 275)
dhandler(Object originalEvent=Event keydown type=keydown)IDNav.js (line 100)
newTrigger()(Object originalEvent=Event keydown type=keydown)jquery.hotkeys.js (line 1)
F()()jquery.js (line 19)
F()(Object originalEvent=Event keydown type=keydown)jquery.js (line 19)
F()()jquery.js (line 19)
[Break on this error] r.focus();

dhandler ist eine der Methoden, die ich ausgecheckt und schien gut zu sein (keine Probleme).
Ich werde schauen, dass sicher sein, obwohl:

Ist es für den Umgang mit den Pfeil-und enter-Tasten für die navigation durch meine Tabelle von input-Elemente.

  • Was ist das Ergebnis, wenn Sie versuchen, "alert(r)" (oder überprüfen Sie die variable in der Firebug) vor r.focus() aufgerufen wird?
  • Ich werde versuchen, eine Warnung. Das ist schwer zu kontrollieren, es in Firebug, weil wenn ich einen Haltepunkt musste ich drücken weiterhin alle mal den Anruf nicht scheitern.
  • was ist der stack-trace von firebug? gibt es einen anderen Ort aufrufen, dass Sie es vergaß? (und warum nicht fügen Sie die if (!r) return; innerhalb setFocusFromVar()
  • Ich fügte hinzu, die Warnung und ging durch Aufruf der Methode eine Reihe von Zeiten, bevor der Fehler kam. Die Warnung zeigte, wie undefiniert
Schreibe einen Kommentar