Enrico: Fehler: Element is undefined

Hallo,

so, mein Scrollproblem habe ich soweit gelöst, war zwar etwas fieslig, aber nun klappt es :-)

Jetzt stehe ich vor dem weiteren Problem, die Innenhöhe des Browsfensters, die Höhe meines Anzeige-divs und die Höhe des im eben genannten div angezeigten Inhalt ermitteln zu müssen.

Das Auslesen der Innenhöhe des Browserfensters und der Höhe des Anzeige-divs sollte funktionieren, da ich hier intensiv gegoogelt habe.

Allerdings bekomme ich in der markierten Zeile die Fehlermeldung "Fehler: Element is undefined".

Hier der Javascript-Code:

var isCSS, isW3C, isIE4, isNN4, isIE6CSS;
     var Browser__Innenhoehe, div__Hoehe, div__Seitenlaenge;
     var Inhalt__Anzeige, Lampe;

function Initialisieren ()
     {
        if (document.images)
        {
           CSS    = (document.body && document.body.style)                            ? true : false;
           W3C    = (isCSS && document.getElementById)                                ? true : false;
           IE4    = (isCSS && document.all)                                           ? true : false;
           NN4    = (document.layers)                                                 ? true : false;
           IE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ? true : false;
        }

Inhalt__Anzeige   = Objektekt_referenzieren ("Inhalt__Anzeige");
        Lampe             = Objektekt_referenzieren ("Lampe");

Browser__Innenhoehe = Innenhoehe_Browser_ermitteln ();
        div__Hoehe          = Browser__Innenhoehe - 106;
        div__Seitenlaenge   = Hoehe_ermitteln ("Inhalt__Anzeige");
     }

function Objektekt_referenzieren (Objekt)
     {
        var Referenz;

if (typeof Objekt == "string")
        {
           if (W3C)
           {
              Referenz = document.getElementById (Objekt);
           }
           else
              if (IE4)
              {
                 Referenz = document.all (Objekt);
              }
              else
                 if (NN4)
                 {
                    Referenz = Layer_referenzieren (document, Objekt);
                 }
        }
        else
        {
           Referenz = Objekt;
        }

return Referenz;
     }

function Layer_referenzieren (Dokument, Bezeichnung)
     {
        var Objekt;

for (var i = 0; i < Dokument.layers.length; i++)
        {
           if (Dokument.layers[i].name == Bezeichnung)
           {
              Objekt = Dokument.layers[i];
              break;
           }

if (Dokument.layers[i].document.layers.length > 0)
           {
              Objekt = Layer_referenzieren (document.layers[i].document, Bezeichnung);
           }
        }

return Objekt;
     }

function Innenhoehe_Browser_ermitteln ()
     {
        if (typeof (window.innerWidth ) == 'number')
        { // Non-IE
           Browser__Innenhoehe = window.innerHeight;
        }
        else
           if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
           { // IE 6+ in 'standards compliant mode'
              Browser__Innenhoehe = document.documentElement.clientHeight;
           }
           else
              if (document.body && (document.body.clientWidth || document.body.clientHeight))
              { // IE 4 compatible
                 Browser__Innenhoehe = document.body.clientHeight;
              }
        return parseInt (Browser_Innenhoehe);
     }

function Hoehe_ermitteln (Objekt)
     {
        var Element = Objektekt_referenzieren (Objekt);
        var Hoehe   = 0;

====>   if (Element.offsetHeight) <====
        {
           Hoehe = Element.offsetHeight;
        }
        else
           if (Element.clip && Element.clip.height)
           {
              Hoehe = Element.clip.height;
           }
           else
              if (Element.style && Element.style.pixelHeight)
              {
                 Hoehe = Element.style.pixelHeight;
              }

return parseInt (Hoehe);
     }

Der hier aufgeführte Code ist Teil einer Script-Datei, die ich in den head integriert habe, die Funktion "Initialisieren" wird unmittelbar vor dem schließenden body-Tag aufgerufen, d.h. sämtliche id's wurden vorher bereits abgearbeitet/angezeigt, auch können etwaige Schreibfehler im Bezeichner ausgeschlossen werden.

Was stimmt am Code nicht?

Danke für eure Hilfe.

Gruß
Enrico

  1. Hi,

    Was stimmt am Code nicht?

    In erster Linie die ausufernde Verwendung von „Browserweichen“ - ist das auf deinem eigenen Mist gewachsen, oder ohne Nachzudenken per Copy&Paste übernommen?

    Raus mit dem ganzen Mist.

    In einem Browser, der document.getElementById nicht kennt, wirst du mit dem restlichen Vorhaben auch nicht viel Erfolg haben.
    Beschränke dich also maximal auf eine Überprüfung, ob der Browser diese Methode kennt - und wenn nicht, dann gibt's halt keine weitere Scriptausführung.
    Oder lass auch diese Überprüfung gleich weg, und verwende document.getElementById einfach - Uralt-Browser, die das nicht kennen, dürften heutzutage unter Nicht-Laborbedingungen praktisch eh keinen Einsatz mehr finden; und falls doch, hat der Nutzer sicher größere Probleme, als eine JavaScript-Fehlermeldung auf deiner Seite.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hallo ChrisB,

      habe mein Vorhaben jetzt ganz anders gelöst, ohne Javascript, das sollte immer funktionieren.

      Trotzdem Danke für Deine Antwort.

      Gruß
      Enrico