[DHTML] Netscape will nicht - warum?

Hallo Experten!

Das DHTML-Menu auf meiner Seite http://www.jugend-hitzkirch.ch/detz-dhtml/index.asp funktioniert wunderbar - allerdings nur im Internet-Explorer! Im Netscape werden alle Ebenen, die die Untermenüs enthalten, schon zu Beginn sichtbar dargestellt - obwohl im DIV-Tag mit style=„visibility:hidden“ gesagt wird, dass sie ausgeblendet sein soll. Ich weiss, dass im Netscape normalerweise „hide“ und nicht „hidden“ gebraucht wird, meine aber, dass bei diesem style-Attribut auch für den Netscape „hidden“ verwendet wird (steht auch so auf http://dhtml.seite.net und geht bei mir in anderer Anwendung auch).

Ich wäre froh, wenn jemand diese Seite kurz anschauen und mir mitteilen könnte, was falsch ist, d.h. wieso die Untermenüs schon zu Beginn angezeigt werden.

Besten Dank.

Daniel

PS: Wahrscheinlich ist mein Problem ein ähnliches wie jenes von dasklaus (drei Posts weiter unten). Mit geht es ebenfalls nicht…

Hallo Daniel

Im Netscape werden alle Ebenen, die die Untermenüs enthalten,
schon zu Beginn sichtbar dargestellt - obwohl im DIV-Tag mit
style=„visibility:hidden“ gesagt wird, dass sie ausgeblendet
sein soll.

_ JavaScript Error:
http://www.jugend-hitzkirch.ch/detz-dhtml/index.asp, line 29:

init is not defined._

Du rufst onload eine Funktion auf, die zu diesem Zeitpunkt noch nicht geladen ist. Du mußt die Funktion vor den Aufruf setzen. Das wird das Problem allerdings noch immer nicht lösen, weil Du dann Elementen Attribute zuweist, die ebenfalls noch nicht geladen sind. Ich würde das ganze an Deiner Stelle nochmal ein wenig umbauen.

Schöne Grüße
Yasmin

Hallo Daniel

Im Netscape werden alle Ebenen, die die Untermenüs enthalten,
schon zu Beginn sichtbar dargestellt - obwohl im DIV-Tag mit
style=„visibility:hidden“ gesagt wird, dass sie ausgeblendet
sein soll.

_ JavaScript Error:
http://www.jugend-hitzkirch.ch/detz-dhtml/index.asp, line 29:

init is not defined._

Du rufst onload eine Funktion auf, die zu diesem Zeitpunkt
noch nicht geladen ist. Du mußt die Funktion vor den Aufruf
setzen.

Hallo Yasmin!

Dieser Teil ist gelöst - dummer Fehler - danke für den Hinweis!

lösen, weil Du dann Elementen Attribute zuweist, die ebenfalls
noch nicht geladen sind.

??? Welchen Elementen weise ich welche Attribute zu??? Beim Laden der Seite wird ja erst ermittelt, ob der Browser ein IE oder ein NC ist, sonst eigentlich nichts. Ich habe das Gefühl, ich weise zu diesem Zeitpunkt noch gar keine Attribute zu…

Wäre froh, wenn du mir das auch noch kurz beantworten könntest!

Danke.
Daniel

Hallo Daniel,

lösen, weil Du dann Elementen Attribute zuweist, die ebenfalls
noch nicht geladen sind.

??? Welchen Elementen weise ich welche Attribute zu??? Beim
Laden der Seite wird ja erst ermittelt, ob der Browser ein IE
oder ein NC ist, sonst eigentlich nichts. Ich habe das Gefühl,
ich weise zu diesem Zeitpunkt noch gar keine Attribute zu…

Du legst in der Funktion die Visible-Attribute für Netscape fest:

function init()
{
if (document.layers)
{ns = 1; ie = 0;}
else
{ns = 0; ie = 1;}
if (ns)
{document.layers[„subMenu“].visibility = „hide“;
document.subMenu2.visibility = „hide“;
document.subMenu3.visibility = „hide“;
document.subMenu4.visibility = „hide“;}

}

Die subMenu-Elemente sind zu diesem Zeitpunkt aber eben noch nicht geladen.

Ich bin mir nicht ganz sicher, aber ich mutmaße, dass die Zuweisung nach der Browserabfrage auch nicht so recht funktionieren kann - Du legst vorab fest, dass, wenn der Browser layer kennt, die Variable „ns“ (die Du vorher gar nicht deklariert hast), den Wert 1 erhält, arbeitest dann aber gar nicht mit diesem Wert. Die if-Abfrage müßte doch eigentlich if(ns == 1) lauten, oder irre ich mich da? (könnte gut sein, in Bezug auf JavaScript und DHTML bin ich eher fortgeschrittene Anfängerin)

Schöne Grüße
Yasmin

Hallo Daniel,

Hallo Yasmin!

Du legst in der Funktion die Visible-Attribute für Netscape
fest:

function init()
{
if (document.layers)
{ns = 1; ie = 0;}
else
{ns = 0; ie = 1;}
if (ns)
{document.layers[„subMenu“].visibility = „hide“;
document.subMenu2.visibility = „hide“;
document.subMenu3.visibility = „hide“;
document.subMenu4.visibility = „hide“;}
}

Die subMenu-Elemente sind zu diesem Zeitpunkt aber eben noch
nicht geladen.

OK, ich habe jetzt die sechs fetten Zeilen entfernt. Das war eigentlich nur ein „Verzweiflungsversuch“. Um nochmals zum Beginn meines Problems zurückzukehren: **Bei meinen Ebenen steht ja

Ich bin mir nicht ganz sicher, aber ich mutmaße, dass die
Zuweisung nach der Browserabfrage auch nicht so recht
funktionieren kann - Du legst vorab fest, dass, wenn der
Browser layer kennt, die Variable „ns“ (die Du vorher gar
nicht deklariert hast), den Wert 1 erhält, arbeitest dann aber
gar nicht mit diesem Wert. Die if-Abfrage müßte doch
eigentlich if(ns == 1) lauten, oder irre ich mich da? (könnte
gut sein, in Bezug auf JavaScript und DHTML bin ich eher
fortgeschrittene Anfängerin)

Möglich, dass es (ns == 1) heisen müsste. Habe diesen Code-Teil von http://dhtml.seite.net, und dort steht etwas, dass diese Variable dann vom Typ Boolean sei (1 für true, 0 für false). - Zudem ist es richtig, dass ich gar nicht mit diesem Wert arbeite. Das soll dann noch folgen. Aber solange schon am Anfang die Untermenüs sichtbar sind, wage ich mich gar nicht, schon ans Ein- und Ausklappen derselben zu denken… Ich denke aber, dass werde ich dann schon schaffen! Doch das sollte ja weiter nicht schlimm sein, dass ich (noch) nicht damit arbeite.

Vielleicht schaffe ichs mit deiner Hilfe doch noch…

Schöne Grüße
Yasmin

Ebenfalls.
Daniel**

HalliHallo,

Aber solange
schon am Anfang die Untermenüs sichtbar sind, wage ich mich
gar nicht, schon ans Ein- und Ausklappen derselben zu
denken… Ich denke aber, dass werde ich dann schon schaffen!
Doch das sollte ja weiter nicht schlimm sein, dass ich (noch)
nicht damit arbeite.

Das rührt daher, dass Du Deine dynamischen Elemente in eine starre Tabellenstruktur gepackt hast - wenn Du alle Submenues aus der Tabelle rausnimmst und völlig ausserhalb der Struktur ablegst, sollten die Menues eigentlich endlich unsichtbar sein. Aber angesichts des Quelltextes muss ich ganz ehrlich sagen, dass Deine Probleme dann erst anfangen…

Kann es sein, dass Du die Seite während der Erstellungsphase (mit einem Editor?) immer nur im IE mit der Auflösung 1024*768 getestet hast? Schaut man sich die Seite nämlich auf einer anderen Auflösung an, ist das Navigation nicht mehr bedienbar, weil die Untermenues soweit von dem Hauptmenue entfernt sind, dass ein MouseOut passiert, wenn man einen der Links erreichen will.

Langsam traue ich mich schon gar nicht mehr, irgendwas zu Deiner Seite zu sagen… ich finde das Design übrigens sehr gelungen! Damit Du auch mal was positives von mir hörst :wink:

Gruß
Yasmin

Hallo wieder mal…

Das rührt daher, dass Du Deine dynamischen Elemente in eine
starre Tabellenstruktur gepackt hast - wenn Du alle Submenues
aus der Tabelle rausnimmst und völlig ausserhalb der Struktur
ablegst, sollten die Menues eigentlich endlich unsichtbar
sein.

YEAH, das hat jetzt endlich mal geklappt. Wie soll ich als DHTML-Anfänger darauf kommen, dass dies das Problem ist, wenn es im IE wunderbar funktioniert ?!?!?!?

Aber angesichts des Quelltextes muss ich ganz ehrlich
sagen, dass Deine Probleme dann erst anfangen…

Ja, der ist wohl wirklich nicht so super. Ich überleg’ mir mal, ob ich nochmal bei Null beginnen soll :frowning:

Kann es sein, dass Du die Seite während der Erstellungsphase
(mit einem Editor?) immer nur im IE mit der Auflösung 1024*768
getestet hast?

Das ist wohl war *schäm*. Ich habe das ganze - allerdings nicht in einem WYSIWYG-Editor gemachte - tatsächlich immer nur so getestet. Ich dachte, am Schluss kann ich das dann entsprechend anpassen… Naja, das mit den Auflösungen werde ich locker *bluff* hinkriegen, denke ich!

Langsam traue ich mich schon gar nicht mehr, irgendwas zu
Deiner Seite zu sagen… ich finde das Design übrigens sehr
gelungen! Damit Du auch mal was positives von mir hörst :wink:

Ich bin sogar FROH, wenn du irgendwas zu meiner Seite sagst!!! Ohne dich wäre ich kaum so „weit“, wie ich jetzt bin. - Danke fürs Kompliment! - Ich mache mich jetzt weiter an die Arbeit mit dem Netscape und den Auflösungen… Wenn ich dich nochmals brauche, schreibe ich dir dann ein E-Mail, wenn das okay ist!

Gruß
Yasmin

Besten Dank für deinen ausführlichen Support :smile:

Daniel