Aber da es ja auch mit != 'undefined' zum Fehler führt, muss das Problem woanders liegen. Nur wo?
Im lesen von Dokumentationen vermutlich.
Was getElementById im Fehlerfall liefert steht z.B. hier. Bei einem eindeutigen Wert im Fehlerfall kann man direkt auf diesen abprüfen.
Was typeof aber mit diesem Wert dann als Ergebniss liefert steht z.B. hier.