Jan: Zugriff auf «select» feld im «Div»

Hallo Leute,

vielleicht könnt ihr mir bei folgendem Problem helfen.

Ich erzeuge eine dynamische Seite mit mehreren Layern, getrennt für NS und IE. Auf der NS-Seite greife ich mit

Index=window.document.meinlayer.document.forms[0].elements[0].selectedIndex;
Inhalt=window.document.meinlayer.document.forms[0].elements[0].options[Index].value;

auf den gewählten Inhalt zu. Klappt auch.

Beim IE nervt mich die Fehlermeldung: '....' ist kein Objekt.
Kann mir jemand sagen, wie ich auf meinen Layer (bzw. div) zugreifen kann?? Habe es schon mit verschiedenen Kombinationen versucht.

Vielen Dank   Jan

  1. Hallo Jan,

    beim IE kann ein div über document.all.divid.eigenschaft
    angesprochen werden.
    Wenn Du versuchst ein div anzusprechen, das noch nicht erzeugt ist
    oder Du Frames einsetzt und nicht die Framsetdatei aufrufst können ebenfalls diese Fehlermeldungen angezeigt werden.

    Viele Grüße

    surfhead

    1. Hi Surfhead,

      danke erstmal für deinen Tipp. Ich möchte allerdings keine direkte Eigenschaft des Layers, sondern des enthaltenen Formulars, bzw. der pulldown-liste (select) auslesen.

      ich hab es jetzt mit folgendem versucht:

      Index=window.document.meinlayer.document.forms[0].elements[0].selectedIndex;
      Inhalt=window.document.meinlayer.document.forms[0].elements[0].options[Index].value;

      den ersten Teil meckert er nicht an. Beim zweiten aber.

      Vielleicht weiß jemand weiter.

      Danke  Jan

  2. Hi Jan!

    Da immer noch niemand geantwortet hat ;-) mach ich das jetzt mal, wenn ich mich auch nicht ganz so gut da auskenne...

    Beim IE nervt mich die Fehlermeldung: '....' ist kein Objekt.

    Ja, IE verwendet ein anderes Objektmodell als Netscape. Dort erzeugen Layer/Divs kein extra document-Objekt. Wenn ich mich recht erinnere, wird alles direkt unter das Haupt-document gehaengt. Etwa so:

    Index = window.document.forms[0].elements[0].selectedIndex;

    Ich weiss das aber nicht so genau, da ich keinen solchen IE habe.

    Wie auch immer das genau geht, letztlich kannst Du einen Code wie folgenden schreiben:

    var ie = document.all ? 1 : 0;      // ie4+ vorhanden?
    // Objekt abhaengig von verwendetem Browser finden
    var select_obj = ie ? document.forms[0].elements[0] : document.meinlayer.document.forms[0].elements[0];

    var Index = select_obj.selectedIndex;
    var Inhalt = select_obj.options[Index].value;

    Laeuft aber vermutlich nicht auf IE3, weil der die all-Auflistung nicht kennt und trotzdem nicht Netscapes Modell verwendet. Wenn Du den unterstuetzen willst, musst Du mal schauen, wie Du die Zuweisung an 'ie' machst, damit der auch mit erfasst wird.

    HTH, Calocybe