Fluffy: Problem mit Netscape

Hallo!

Ich habe ein Problem mit Netscape. Hier erstmal der Quelltext und dann die Erläuterung dazu.

HTML

<div class=menu-entry-group>
  <div class=menu-entry id="id">
  <a href="#" target="main"><span class=menu-entry-text> Internetseminar</span></a>
  </div>
</div>

und dazu ein Script

document.getElementById(id).className ='menu-entry-selected';
  document.getElementById(id).firstChild.firstChild.className = 'menu-entry-text-selected';

Mein Problem ist nun, das Netscape nicht den className des span-Elements ändert. Beim IE klappt das wunderbar. Beim Versuch auf das Element "document.getElementById(id).firstChild.firstChild" zu zugreifen sagt Netscape immer das es "null" ist. Ich hoffe mir kann jemand helfen. Thx schon mal.

Bis dann, dann

  1. Hallo,

    Mein Problem ist nun, das Netscape nicht den className des span-Elements ändert. Beim IE klappt das wunderbar. Beim Versuch auf das Element "document.getElementById(id).firstChild.firstChild" zu zugreifen sagt Netscape immer das es "null" ist.

    Netscape 4.x kennt keine W3C-DOM-Methoden.

    MfG, Thomas

    1. Hallo Thomas!

      Netscape 4.x kennt keine W3C-DOM-Methoden.

      MfG, Thomas

      Ich meine Netscape 6.

      1. Hallo,

        Ich meine Netscape 6.

        Dann poste mal etwas Code, der zeigt wer da wessen Kind ist. Vielleicht hilft es schon, an bestimmten Stellen im HTML-Code Zeilenumbrueche zu vermeiden, die evtl. als Textknoten gedeutet werden.

        MfG, Thomas

        1. Den Html-Code hab ich doch schon gepostet. Das erste <div> ist noch uninteressant, aber das zweite hat dann die id und dann kommt noch das <a> und dann <span>. Somit müsste ja "document.getElementById(id).firstChild.firstChild" das <span> liefern.

          1. Hallo,

            Den Html-Code hab ich doch schon gepostet.

            Ja ok, hatte ich nicht mehr im Blick.

            Das erste <div> ist noch uninteressant, aber das zweite hat dann die id und dann kommt noch das <a> und dann <span>. Somit müsste ja "document.getElementById(id).firstChild.firstChild" das <span> liefern.

            Prinzipiell schon, aber schreibe erstmal die Klassennamen in "..." und versuche dann noch testweise den Umbruch nach dem zweiten DIV wegzunehmen (koennte ein Textknoten sein).
            Schreibweisen wie id="id" sind nicht falsch, IMHO aber immer etwas ungluecklich gewaehlt.

            Ansonsten pruefe doch einfach mal ab, wieviele Kinder unterhalb des zweiten DIVs stehen:
            document.getElementById(id).childNodes.length;
            bzw. frage document.getElementById(id).hasChildNodes() ab, was true bzw. false ergibt.

            MfG, Thomas

            1. Thx Thomas!

              Lag an dem zweiten <div>. Habe jetzt alles in eine Zeile geschrieben und es funktioniert. Höchst eigenwillig manche Browser! ;-)

              1. hi

                Lag an dem zweiten <div>. Habe jetzt alles in eine Zeile geschrieben und es funktioniert. Höchst eigenwillig manche Browser! ;-)

                jein, man kann ja das Leerzeichen da nicht einfach von Tisch fallen lassen...

                Grüße aus Bleckede

                Kai

                1. Hallo,

                  jein, man kann ja das Leerzeichen da nicht einfach von Tisch fallen lassen...

                  In seinem Code ist in der _Sourceansicht_ kein LZ zwischen den Zeilen, sondern nur jeweils ein CR/LF und das sollte AFAIK nicht als Textknoten aufgefasst werden.

                  MfG, Thomas

                  1. hi

                    In seinem Code ist in der _Sourceansicht_ kein LZ zwischen den Zeilen, sondern nur jeweils ein CR/LF und das sollte AFAIK nicht als Textknoten aufgefasst werden.

                    *grübel*
                    glaub' du hast recht -> Bugzilla #?

                    Grüße aus Bleckede

                    Kai

                    1. Ich bin's nochmal. Dieser kleine Fehler von Netscape ist nicht gerade hilfreich, wenn man den Sourcecod übersichtlich halten will. Naja, kann man nix machen. Auf alle Fälle funktioniert es jetzt dank Thomas!

                      Bis dann, dann

                      1. hi

                        Ich bin's nochmal. Dieser kleine Fehler von Netscape ist nicht gerade hilfreich, wenn man den Sourcecod übersichtlich halten will. Naja, kann man nix machen. Auf alle Fälle funktioniert es jetzt dank Thomas!

                        könntest du nochmal Thomas' Verdacht prüfen, dass nicht der Zeilenumbruch, sondern die Einrückung der "Übeltäter" ist? DIE müssen nämlich erreichbar sein!

                        Grüße aus Bleckede

                        Kai

                        1. Der Zeilenumbruch wars.

                          1. hi

                            Der Zeilenumbruch wars.

                            hmmmmm Thomas? Bug?

                            grüße.. Kai

                            1. Hallo,

                              Der Zeilenumbruch wars.

                              hmmmmm Thomas? Bug?

                              Sieht ganz danach aus.

                              MfG, Thomas

                    2. Hallo,

                      *grübel*
                      glaub' du hast recht -> Bugzilla #?

                      Wenn ich das nochmal genauer betrachte, wuerde ich eher sagen: Grenzfall. In der Zeile nach dem zweiten oeffnenden DIV steht offenbar </div>CR/LF|leer|leer|<a ... Insofern kann|muss(?) der Browser diese beiden Leerzeichen zu einem normalisieren und findet somit tatsaechlich einen Textknoten mit dem nodeValue=" ".
                      Wenn also ein Element mixed content enthalten darf, also etwa element1 (#PCDATA,element2,...), dann waere die Reaktion ok.

                      Abfolgen wie <tr>  <td> duerften aber keinen Textknoten generieren (muesste also identisch mit <tr><td> sein), weil das Element tr als Inhaltsmodell eben nicht #PCDATA hat, sondern nur Elementcontent (th oder td).

                      MfG, Thomas