EightBitWitch: Display='Block' für A-Tag bei IE

Guten Abend,

gleich zu Anfang möchte ich sagen, das ich nicht weiss, ob dieser Betrag nun in den Bereich JAVASCRIPT oder CSS gehört. Bitte verschiebt ihn nach euren Regeln, ich bin noch recht neu hier im Forum.

Bei mir tritt das folgende Problem derzeit in JavaScript auf:

Ich möchte für ein A-Tag die style-Eigenschaft DISPLAY von 'inline' (ist doch die Vorgabe - oder?) nach 'block' ändern.

Alle Gecko-Browser, also Firefox und Co, machen das auch ohne Probleme. Nur der IE (bei mir IE7) weigert sich. Das Script wird ohne eine Meldung (Debugger usw. eingeschaltet) angebrochen, es läuft also nicht bis zum Ende durch :-(

Im msdn (http://msdn2.microsoft.com/en-us/library/ms530751.aspx) habe ich nun gelesen, das des die Eigentschaft DISPLAY für das A-Tag garnicht gibt.
Ist das so richtig oder nur die Sicht von Microsoft?
Wie sieht das das W3C?

Manche Sachen durchblicke ich einfach noch nicht und mein Hirn ist leider auch nicht mehr so 'bewegslich' wie noch von 20 Jahren.

Wo kann ich in Zukunft sowas nachlesen? Gibt es ein gutes (oldstyle) Buch oder online-Angebote. Ich bevorzuge die deutsche Sprache, da mein Schulenglisch (schon sehr lange her) nciht besonders gut ist.

Hier bei SelfHTML habe ich entsprechendes noch nicht gefunden, was wahrscheinlich daran liegt, das ich nicht am richtigen Ort gesucht habe.

  1. Ich möchte für ein A-Tag die style-Eigenschaft DISPLAY von 'inline' (ist doch die Vorgabe - oder?) nach 'block' ändern.

    Alle Gecko-Browser, also Firefox und Co, machen das auch ohne Probleme. Nur der IE (bei mir IE7) weigert sich. Das Script wird ohne eine Meldung (Debugger usw. eingeschaltet) angebrochen

    Verrätst du auch, was du eigentlich gemacht hast?

    Im msdn (http://msdn2.microsoft.com/en-us/library/ms530751.aspx) habe ich nun gelesen, das des die Eigentschaft DISPLAY für das A-Tag garnicht gibt.
    Ist das so richtig oder nur die Sicht von Microsoft?

    Nein, das hast du falsch verstanden. Die Liste, die dort aufgeführt ist, beinhaltet Elemente für die die Eigenschaft a) nur lesbar ist und b) nicht die Vorgabe inline besitzt.

    Zum Ende der besagten Seite hin finden sich Beispiele, hast du die schon ausprobiert?

    1. Ich möchte für ein A-Tag die style-Eigenschaft DISPLAY von 'inline' (ist doch die Vorgabe - oder?) nach 'block' ändern.

      Alle Gecko-Browser, also Firefox und Co, machen das auch ohne Probleme. Nur der IE (bei mir IE7) weigert sich. Das Script wird ohne eine Meldung (Debugger usw. eingeschaltet) angebrochen

      Verrätst du auch, was du eigentlich gemacht hast?

      Ich will ein Link (a href ....) in Eigenschaft DISPLAY von 'inline' auf 'block' setzen. Also (nur Bespielhaft):
      ----------------------------DIV------------------------UL---------------------------------LI----------------------A----------------------------
      document.getElementById('module-lastcomments').getElementsByTagName('ul')[0].getElementsByTagName('li')[3].childNodes[4].style.display='block';

      Damit erreiche ich, das ein Link, der innerhalb eines recht schmalen Bereiches meines Test-Blogs (siehe http://virtualhistoricfair.blog.de und dort 'Letzte Kommentare') das der letzte Link automatisch in die nächste Zeile, also unterhalb des restlichen Listenelementinhaltes rutscht. Das ist jetzt sicher nicht gut erklärt, aber ich kann das nicht besser. Ich bin da eher visuelle veranlagt:
      so sieht das ohne Änderung aus:
      -----------------------------
      EightBitWitch pro: Willkommen
      Toepferschnecke
      -----------------------------

      nach der Änderung, die in FF und Co funktioniert:

      -----------------------------
      EightBitWitch pro:
      Willkommen Toepferschnecke
      -----------------------------

      Hier sind es drei Links:
      EightBitWitch/pro/Willkommen Toepferschnecke

      Ich habe auf den Source-Code dieses Bereiches keine Einfluss, er wird von einer anderen Quelle eingefügt. Es gibt im Original-Code nur einen Platzhalter, hier {module-lastcomments}, der die Liste (in eine UL/LI -Liste eingebunden) der letzten Blog-Kommentare enthält. Je nach Anzahl der abgegebenen Kommentare können das 0-10 Listenelemente sein.

      Hier die ganze Funktion:
      ---------------------------------------------------------------------
      function modify_sidebarComments() {
       //Ändere 'Letzte Kommentare' in der Sidebar
        var a=document.getElementById('module-lastcomments');
        var b=a.getElementsByTagName('ul');
        //b[0].style.border='1px dashed yellow';
        var c=b[0].getElementsByTagName('li');

      //var test='';
        for (var i = 0; i < c.length; i++) {
          if (i<=c.length-2) {
           //c[i].style.border='1px solid green';
           //document.getElementById('test2').innerHTML=i+'/'+c.length;

      if (isIE4bis7()) {
              //Für IE4-7
              if (c[i].childNodes.length == 6) {
                //Benutzername mit 'Pro' <strong><sub><a>pro</a></sub></strong>
                var d=c[i].childNodes[4];
              } else {
                //ohne 'pro'
                var d=c[i].childNodes[2];
              }

      //test+=i+':'+c[i].childNodes.length+'; ';
            } else {
              //Für den Rest der Browserwelt
              var d=c[i].lastChild;
            }
            //d.style.border='1px solid red';
            if (isIE4bis7) {
              var newBR = document.createElement('br');
              c[i].insertBefore(newBR,d);
              //c[i].childNodes[0].style.border='1px solid red';
            } else {
              d.style.display='block';
              d.style.marginTop='-6px';
              d.style.paddingBottom='2px';
            }
            //d.style.borderBottom='1px solid #d08020';

      c[i].style.borderBottom='1px solid #d08020';
          } else {
            c[i].className='LastListItem';
          }
        }
        //document.getElementById('test2').innerHTML=test;
      }

      ---------------------------------------------------------------------

      In der hier gezeigten Funktion, habe ich das für den IE vorübergehend  anders gelöst: ich füge mit insertBefore ein BR vor dem betreffenden A-Tag ein.

      Das ist ein derzeit praktikable Lösung, aber bringt mir noch keine Antwort auf meine ursprüngliche Frage.

      Im msdn (http://msdn2.microsoft.com/en-us/library/ms530751.aspx) habe ich nun gelesen, das des die Eigentschaft DISPLAY für das A-Tag garnicht gibt.
      Ist das so richtig oder nur die Sicht von Microsoft?

      Nein, das hast du falsch verstanden. Die Liste, die dort aufgeführt ist, beinhaltet Elemente für die die Eigenschaft a) nur lesbar ist und b) nicht die Vorgabe inline besitzt.

      Das habe ich jetzt nicht verstanden.
      Die Eigenschaft DISPLAY ist bei dem A-Tag nur lesbar? Das ist dann aber wohl eine IE-Eigenart oder entspricht das den W3C-Regeln?
      Für mich ist HTML/CSS und JavaScript noch ziemliches Neuland und oft weiß ich einfach auch noch nicht, wo ich nach Antworten suchen soll. Ich bitte meine diesbezügliche Unbeholfenheit zu entschuldigen. Englische Dokumente stellen für mich derzeit auch noch eine gewisse Hürde dar.

      Zum Ende der besagten Seite hin finden sich Beispiele, hast du die schon ausprobiert?

      Sorry, aber die sind für mein Problem nicht wirklich hilfreich.

      1. Hallo,

        document.getElementById('module-lastcomments').getElementsByTagName('ul')[0].getElementsByTagName('li')[3].childNodes[4].style.display='block';

        bist du sicher, dass du mit childNodes[4] auch den Knoten erwischt hast, den du eigentlich meinst? Beachte, dass der IE Whitespaces (also z.B. Zeilenumbrüche) als Textknoten mitzählt.
        Wenn du also meinst, dass dein ausgewähltes li-Element mehrere Links enthält und du willst einen davon adressieren, dann ist es ratsam, hier _nochmal_ mit getElementsByTagName() durch die a-Elemente zu laufen. Auch wenn das den gesamten Ausdruck noch wuchtiger aussehen lässt.

        In der hier gezeigten Funktion, habe ich das für den IE vorübergehend  anders gelöst: ich füge mit insertBefore ein BR vor dem betreffenden A-Tag ein.

        Immerhin ein praxistauglicher Workaround. ;-)

        Im msdn (http://msdn2.microsoft.com/en-us/library/ms530751.aspx) habe ich nun gelesen, ...

        Um Himmels Willen, was ist denn das für eine kaputte Seite! Die Elemente überlappen sich teilweise, und um zu scrollen, muss ich den Text auf der Seite mit der Maus markieren - einen Scrollbalken gibt's nämlich nicht. Dass ausgerechnet die Microsoft-Seiten nicht einmal im IE anständig dargestellt werden, ist schon erstaunlich.

        Nein, das hast du falsch verstanden. Die Liste, die dort aufgeführt ist, beinhaltet Elemente für die die Eigenschaft a) nur lesbar ist und b) nicht die Vorgabe inline besitzt.

        Auch das ist nicht ganz richtig. Da steht erstens, dass die display-Eigenschaft bei allen Objekten außer currentStyle lesbar und schreibbar ist. Darunter steht außerdem eine Liste von HTML-Elementen, bei denen der Defaultwert für display NICHT "inline" ist. Das a-Element ist in der Liste nicht aufgeführt, also IST dessen Defaultwert "inline".

        Das habe ich jetzt nicht verstanden.
        Die Eigenschaft DISPLAY ist bei dem A-Tag nur lesbar?

        Nein, das sit ein Missverständnis.

        Englische Dokumente stellen für mich derzeit auch noch eine gewisse Hürde dar.

        Dann solltest du an deinen Englischkenntnissen und -fertigkeiten arbeiten. Auch wenn ein großer Teil der Spezifikationen und Informationen in Deutsch verfügbar ist, so ist Englisch doch _DIE_ Fachsprache der Branche, und die meisten IT-Dokumente werden in Englisch verfasst. Die deutschen Übersetzungen sind oft unvollständig, veraltet, oder falsch übersetzt.
        Ich persönlich bevorzuge immer die englische Fassung.

        Zum Ende der besagten Seite hin finden sich Beispiele, hast du die schon ausprobiert?
        Sorry, aber die sind für mein Problem nicht wirklich hilfreich.

        Das würde ich auch so sehen.

        So long,
         Martin

        --
        Success should be measured not so much by the position that one has reached in life,
        but by the obstacles one has overcome while trying to succeed.
        1. Hallo,

          document.getElementById('module-lastcomments').getElementsByTagName('ul')[0].getElementsByTagName('li')[3].childNodes[4].style.display='block';

          bist du sicher, dass du mit childNodes[4] auch den Knoten erwischt hast, den du eigentlich meinst? Beachte, dass der IE Whitespaces (also z.B. Zeilenumbrüche) als Textknoten mitzählt.

          Ja, da bin ich sicher, auch wenn es zwei Tage arbeitet gekostet hat, die anderen 'Denkweise' des IE zu durchschauen, da diese ja auch in sich, nicht immer logisch und einheitlich ist. Ich ziehe beim 'zielen' meistens roten Rahmen (border:1px solid red;)um die 'getroffenen' Elemente, da ich so besser testen kann ob ist das richtige Element getroffen habe.
          In diesem Fall ist es so, das die Anzahl den Elemente innerhalb von LI auch noch variieren kann, daher auch der eine IF-Block wo einmal childNodes[4] und einmal childNodes[2] gewählt wird.
          Für den Fall, das das Script es nicht mit dem IE zu tun hat, funktioniert einfach lastChild (Siehe Code der Funktion).
          Ich hatte gehofft, das das auf dem Code der Funktion hervorgeht. Kann sein, das ich zu wenig kommentiert habe, als das es ein Aussenstehender meine Gedankenzüge verstehen kann.
          Ich programmiere sicherlich anderes als die jungen Leute und es ist für diese Leute oft schwer zu verstehen, wie ich an ein Problem heran gehe. Ich habe vor 25 Jahre meine erste Programme in Assembler geschrieben und das hat mich geprägt.

          Wenn du also meinst, dass dein ausgewähltes li-Element mehrere Links enthält und du willst einen davon adressieren, dann ist es ratsam, hier _nochmal_ mit getElementsByTagName() durch die a-Elemente zu laufen. Auch wenn das den gesamten Ausdruck noch wuchtiger aussehen lässt.

          Hat keine Sinn, zumindest wenn ich alles richt verstanden habe, denn keines der fraglichen Elemente hat ein name-Attribut. Kein name, kein class und nur ein ID am Anfang - deswegen auch der ganze Aufwand eines Facelifing per JavaScript.

          In der hier gezeigten Funktion, habe ich das für den IE vorübergehend  anders gelöst: ich füge mit insertBefore ein BR vor dem betreffenden A-Tag ein.

          Immerhin ein praxistauglicher Workaround. ;-)

          Danke!

          Im msdn (http://msdn2.microsoft.com/en-us/library/ms530751.aspx) habe ich nun gelesen, ...

          Um Himmels Willen, was ist denn das für eine kaputte Seite! Die Elemente überlappen sich teilweise, und um zu scrollen, muss ich den Text auf der Seite mit der Maus markieren - einen Scrollbalken gibt's nämlich nicht. Dass ausgerechnet die Microsoft-Seiten nicht einmal im IE anständig dargestellt werden, ist schon erstaunlich.

          Nein, das hast du falsch verstanden. Die Liste, die dort aufgeführt ist, beinhaltet Elemente für die die Eigenschaft a) nur lesbar ist und b) nicht die Vorgabe inline besitzt.

          Auch das ist nicht ganz richtig. Da steht erstens, dass die display-Eigenschaft bei allen Objekten außer currentStyle lesbar und schreibbar ist. Darunter steht außerdem eine Liste von HTML-Elementen, bei denen der Defaultwert für display NICHT "inline" ist. Das a-Element ist in der Liste nicht aufgeführt, also IST dessen Defaultwert "inline".

          Das habe ich jetzt nicht verstanden.
          Die Eigenschaft DISPLAY ist bei dem A-Tag nur lesbar?

          Nein, das sit ein Missverständnis.

          ok, verstanden.

          Englische Dokumente stellen für mich derzeit auch noch eine gewisse Hürde dar.

          Dann solltest du an deinen Englischkenntnissen und -fertigkeiten arbeiten. Auch wenn ein großer Teil der Spezifikationen und Informationen in Deutsch verfügbar ist, so ist Englisch doch _DIE_ Fachsprache der Branche, und die meisten IT-Dokumente werden in Englisch verfasst. Die deutschen Übersetzungen sind oft unvollständig, veraltet, oder falsch übersetzt.
          Ich persönlich bevorzuge immer die englische Fassung.

          Mal sehen. Ich bin kein Teil der Branche mehr und vor zwanzig Jahren, als ich mitten in dieser Branche stecke, ging das alle noch gut mit 'probieren geht über studieren' (auch bei Novell Netware 2.15 und Co *Achtung: Museumsware*) - ok, diese Zeiten sind vorbei. Ich bin inzwischen berentet und ich verdiene nicht mein Geld mit der Sache, ist eher ein ambitioniertes Hobby von mir. Habe einfach Spaß dran.
          Ich probiere halt viel rum, lerne dabei viel, nur manchmal komme ich nicht mehr weiter und 'lande' dann hier.
          Die verständliche Formulierung der Problem, die sich hin und wieder ergeben, fällt mir ehrlich gesagt schon recht schwer, da ich eben mehr in Bilder und Bildsequenzen denke und mir die ganze Materie noch nichtt zu geläufig ist. Ok, dafür könnte ich etwas zu 6502 und Z80-Assembler referieren - kein Angst, das erspare ich euch ;-)
          Ich komme eben aus einer anderen Zeit, als vermutlich viele derjenigen, die sich heute ernsthaft mit der Erstellung von Web-Angeboten beschäftigt.

          Zum Ende der besagten Seite hin finden sich Beispiele, hast du die schon ausprobiert?
          Sorry, aber die sind für mein Problem nicht wirklich hilfreich.

          Das würde ich auch so sehen.

          So long,
          Martin

          Oh man, das hat wieder Kraft gekostet ...

          PS.

          Viele was ich hier geschrieben habe, ist sicherlich Off-Topic und wen das stört, der mag das mir das bitte verzeihen und überlesen, aber: Ich wollte mal herausstellen, das es auch noch ganz andere Programmier-Charaktere gibt, als die jungen Wilden von heute auf die ich immer wieder treffe und die eine ganz andere Herangehensweise haben als die Leute meiner Generation. Letztens habe ich einen 77 Jahren alten Herren interviewt, der in den 60er Jahren an einem Zuse-Rechner und an meiner LGP-21 (http://virtualhistoricfair.blog.de/2007/06/03/es_geht_endlich_los_librascope_general_p~2377381) gearbeitet und dafür Programme geschrieben hat. Das war dann auch für mich eine völlig andere Welt und Denkweise bezüglich der Programmerstellung.

          1. Hi,

            bist du sicher, dass du mit childNodes[4] auch den Knoten erwischt hast, ...
            Ja, da bin ich sicher, auch wenn es zwei Tage arbeitet gekostet hat, die anderen 'Denkweise' des IE zu durchschauen, da diese ja auch in sich, nicht immer logisch und einheitlich ist. Ich ziehe beim 'zielen' meistens roten Rahmen (border:1px solid red;)um die 'getroffenen' Elemente, da ich so besser testen kann ob ist das richtige Element getroffen habe.

            das ist eine gute Methode - wenn auch beim IE mühsam. ;-)

            Ich programmiere sicherlich anderes als die jungen Leute und es ist für diese Leute oft schwer zu verstehen, wie ich an ein Problem heran gehe. Ich habe vor 25 Jahre meine erste Programme in Assembler geschrieben und das hat mich geprägt.

            Willkommen im Club. :-)
            Auch ich bin eigentlich mit Assembler Mitte der 80er Jahre in die Welt der Programmierung hineingerutscht. Im Studium kamen dann Pascal und C dazu, später autodidaktisch etwas C++, in den letzten Jahren dann noch Javascript und PHP. Aber ich sehe mich auch noch als Programmierer der alten Schule.

            [...] _nochmal_ mit getElementsByTagName() durch die a-Elemente zu laufen.
            Hat keine Sinn, zumindest wenn ich alles richt verstanden habe, denn keines der fraglichen Elemente hat ein name-Attribut.

            Braucht's auch nicht, es würde ja um den _Tag_namen gehen.

            [...] Ich persönlich bevorzuge immer die englische Fassung.
            Mal sehen. Ich bin kein Teil der Branche mehr [...] Ich bin inzwischen berentet und ich verdiene nicht mein Geld mit der Sache, ist eher ein ambitioniertes Hobby von mir. Habe einfach Spaß dran.

            Oh, ich hatte dich doch etwas jünger eingestuft. Immerhin haben wir noch eine zweite Sache gemeinsam: Nämlich dass wir mit Webdesign, Programmierung und so nicht unser Geld verdienen.

            Ok, dafür könnte ich etwas zu 6502 und Z80-Assembler referieren - kein Angst, das erspare ich euch ;-)

            Hey, wieso? Gut, mit dem Z80 konnte ich mich nie anfreunden, aber 6502 und dessen Verwandte sind heute noch beste Freunde von mir.

            Letztens habe ich einen 77 Jahren alten Herren interviewt, der in den 60er Jahren an einem Zuse-Rechner und an meiner LGP-21 (http://virtualhistoricfair.blog.de/2007/06/03/es_geht_endlich_los_librascope_general_p~2377381) gearbeitet und dafür Programme geschrieben hat.

            Respekt. So eine Bekanntschaft, die einem die Augen für andere, vielleicht auch ältere Techniken öffnet, wünsche ich vielen. Auch mir.

            Schönes Wochenende,
             Martin

            --
            Ich wollt', ich wär ein Teppich. Dann könnte ich morgens liegenbleiben.
            1. Hi,

              bist du sicher, dass du mit childNodes[4] auch den Knoten erwischt hast, ...
              Ja, da bin ich sicher, auch wenn es zwei Tage arbeitet gekostet hat, die anderen 'Denkweise' des IE zu durchschauen, da diese ja auch in sich, nicht immer logisch und einheitlich ist. Ich ziehe beim 'zielen' meistens roten Rahmen (border:1px solid red;)um die 'getroffenen' Elemente, da ich so besser testen kann ob ist das richtige Element getroffen habe.

              das ist eine gute Methode - wenn auch beim IE mühsam. ;-)

              Ich programmiere sicherlich anderes als die jungen Leute und es ist für diese Leute oft schwer zu verstehen, wie ich an ein Problem heran gehe. Ich habe vor 25 Jahre meine erste Programme in Assembler geschrieben und das hat mich geprägt.

              Willkommen im Club. :-)
              Auch ich bin eigentlich mit Assembler Mitte der 80er Jahre in die Welt der Programmierung hineingerutscht. Im Studium kamen dann Pascal und C dazu, später autodidaktisch etwas C++, in den letzten Jahren dann noch Javascript und PHP. Aber ich sehe mich auch noch als Programmierer der alten Schule.

              [...] _nochmal_ mit getElementsByTagName() durch die a-Elemente zu laufen.
              Hat keine Sinn, zumindest wenn ich alles richt verstanden habe, denn keines der fraglichen Elemente hat ein name-Attribut.

              Braucht's auch nicht, es würde ja um den _Tag_namen gehen.

              Ups, da hatte ich nicht richtig hingeschaut, klar ...ByTagName.
              Damit hatte ich das gleich am Anfang probiert, was anaderer Stelle uch immer geklppt hatte. Aber hier wollte das nicht gehen - keine Ahnung warum. Nun ja, habe ja eine andere Lösung gefunden.
              Aber es beunruhigt mich schon etwas, wenn ich nicht ergründen kann, warum das eine oder andere nicht funktioniert oder was der IE sich das so 'denkt', denn ich werde sicherlich bald wieder vor eine ähnlichen Problem stehen, ohne dann eine Lösung parat zu haben - kein schönes Gefühl.

              [...] Ich persönlich bevorzuge immer die englische Fassung.
              Mal sehen. Ich bin kein Teil der Branche mehr [...] Ich bin inzwischen berentet und ich verdiene nicht mein Geld mit der Sache, ist eher ein ambitioniertes Hobby von mir. Habe einfach Spaß dran.

              Oh, ich hatte dich doch etwas jünger eingestuft. Immerhin haben wir noch eine zweite Sache gemeinsam: Nämlich dass wir mit Webdesign, Programmierung und so nicht unser Geld verdienen.

              Ok, dafür könnte ich etwas zu 6502 und Z80-Assembler referieren - kein Angst, das erspare ich euch ;-)

              Hey, wieso? Gut, mit dem Z80 konnte ich mich nie anfreunden, aber 6502 und dessen Verwandte sind heute noch beste Freunde von mir.

              Meine auch: C64, Atari 800XL und Apple //e - ok, falsches Forum!

              Letztens habe ich einen 77 Jahren alten Herren interviewt, der in den 60er Jahren an einem Zuse-Rechner und an meiner LGP-21 (http://virtualhistoricfair.blog.de/2007/06/03/es_geht_endlich_los_librascope_general_p~2377381) gearbeitet und dafür Programme geschrieben hat.

              Respekt. So eine Bekanntschaft, die einem die Augen für andere, vielleicht auch ältere Techniken öffnet, wünsche ich vielen. Auch mir.

              Das eröffnet einem ganz neue Denkweisen, wenn man die Maschinen für ganz früher verstehen, programmieren und restaurieren will.

              Schönes Wochenende,
              Martin

              Gleichfalls,
              Valerie

      2. Hi,

        --------A----------------------------
        .childNodes[4].style.display='block';

        Sicher?
        IE zählt bei den childNodes whitespace zwischen Elementen nicht mit, Firefox schon (oder war's umgekehrt?)

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi,

          --------A----------------------------
          .childNodes[4].style.display='block';

          Sicher?
          IE zählt bei den childNodes whitespace zwischen Elementen nicht mit, Firefox schon (oder war's umgekehrt?)

          cu,
          Andreas

          Bei mir klappt das so. Ich habe für den IE und den Rest der Browserwelt jeweils andere Art, um auf das gewünschte Element zuzugreifen.

          Hier die Struktur:

          ul
            li                                      #0
              a
                #text
              #text
              strong                                #3
                sub
                  a
                    #text
              #text                                 #4
              a          <------ da musste ich ran. #1
                #text                               #2

          An der Punkt #1 musste ich ran um die gewünschten Änderung vornehmen zu können. Mit FF, Opera und Safari3(win) ging das von #0 ausgehend mit #0.lastChild. Der IE7 liefert bei #0.lastChild #2 und nicht #1 als Zielelement. Ich sehe das als Fehler im IE7 an.
          Ich komme beim IE7 aber mit #0.childNodes[4].

          #0,#1,#2,#3 und #4 sind syntaktisch natürlich nicht richtig und hier nur zur Verdeutlichung verwendet worden.

          Lustig wird es, wenn mam bei IE7 versucht #3 per #0.firstChild.nextsibling.nextsibling zu erreichen. Das geht beim IE7 nämlich nicht. IE7 liefert dann #4 zurück.
          Ich habe mir mal die nodeName(s) der einzelnen Elemente ausgeben lassen.
          #0.firstChild.nodeName                                                  A
          #0.firstChild.nextSibling.nodeName                                      A #TEXT
          #0.firstChild.nextSibling.nextSibling.nodeName                          A #TEXT A (müsste A #TEXT STRONG sein)
          #0.firstChild.nextSibling.nextSibling.nextSibling.nodeName              A #TEXT A #TEXT
          #0.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeName  A #TEXT STRONG #TEXT A (erst jetzt taucht STRONG auf)
                                                                                  Hier kommt dann vom IE7 auch noch die Fehlermeldung "Objekt erforderlich",
                                                                                  die nicht kommen dürfte, denn es wird das erste Kind und kann am Ende der
                                                                                  vierte Nachbar (als letzte A-Tag) adressiert.

          Ist diese Verhalten des IE7 schon jemanden bekannt?

          An die Forum-Admins:
          Wenn das hier als neuer Beitrag/anderes Thema angesehen werden sollte oder als wichtig angesehen wird, dann macht bitte ein neues Thema/Beitrag daraus

          1. Hier die Struktur:

            ul
              li                                      #0
                a
                  #text
                #text
                strong                                #3
                  sub
                    a
                      #text
                #text                                 #4
                a          <------ da musste ich ran. #1
                  #text                               #2

            Ich finde deine "Struktur" nicht hilfreich. Wir reden doch von einer HTML Struktur, oder?
            Wie bekommst du da zwei Textknoten hintereinander hin?

            wenn ich das richtig verstehe müßtest du sowas haben:

            <ul>
            <li>
            <a ...> text </a>
            text
            <strong>
            <sub>
            <a ...> text </a>
            text
            <a ...> text </a>
            </sub></strong>
            </li>
            ...
            </ul>

            Da ist die Frage welche Logik ist dahinter?
            Willst du den 3. Anker in einem li-Element?
            Dann geht so etwas
            document.getElementsByTagName('li')[index].getElementsByTagName('a')[2];

            oder suchst du den 2. Anker in einem sub-Element

            document.getElementsByTagName('li')[index].getElementsByTagName('sub')[0].getElementsByTagName('a')[1];

            Ich würde nicht mit Nodes und Childes arbeiten, da die Browser zuviele Unterschiede machen was ein Child ist und was nicht.

            Struppi.

            1. Hier die Struktur:

              ul
                li                                      #0
                  a
                    #text
                  #text
                  strong                                #3
                    sub
                      a
                        #text
                  #text                                 #4
                  a          <------ da musste ich ran. #1
                    #text                               #2

              Ich finde deine "Struktur" nicht hilfreich. Wir reden doch von einer HTML Struktur, oder?
              Wie bekommst du da zwei Textknoten hintereinander hin?

              Das ist die Struktur(ansicht) wie sie der DOM-Inspector geliefert hat.

              wenn ich das richtig verstehe müßtest du sowas haben:

              <ul>
              <li>
              <a ...> text </a>
              text
              <strong>
              <sub>
              <a ...> text </a>
              text
              <a ...> text </a>
              </sub></strong>
              </li>
              ...
              </ul>

              Genau. Ich fand das andere aber übersichtlicher.

              Da ist die Frage welche Logik ist dahinter?
              Willst du den 3. Anker in einem li-Element?
              Dann geht so etwas
              document.getElementsByTagName('li')[index].getElementsByTagName('a')[2];

              Genau das ging beim IE, aus welchem Grund auch immer nicht. (*1)

              oder suchst du den 2. Anker in einem sub-Element

              Wenn du die für dich nicht hilfreiche Struktut mal genau angesehen hättest, dann hättest du erkannt, wo ich kann will/muss. Es ist steh dort sogar im Klartest.

              document.getElementsByTagName('li')[index].getElementsByTagName('sub')[0].getElementsByTagName('a')[1];

              Ich würde nicht mit Nodes und Childes arbeiten, da die Browser zuviele Unterschiede machen was ein Child ist und was nicht.

              *1)
              Wenn du dir dir Mühe gemacht hättest alles zu lesen, was hier vor deinem Posting geschrieben wurde, dann hättest du sicherlich bemerkt, das ich das für den IE4-7 und den Rest der Browserwelt jeweils anders gelöst habe, wie ja auch auch dem Sourcecode meines Funktion hervorgeht. Und das war auch nicht meine

              Struppi.

              Mein ursprüngliche Frage war allerdings auch eine ganz andere - bitte nochmal von vorne lesen.
              Die Diskussion über getElementDINGSBUMS1/DINGSBUMS2 oder childNodes ist für meine eigentlich Frage wenig hilfreich und für mich auch recht zeitraubend.
              Warum kann man sich hier nicht auf meine ursprüngliche Frage beziehen?
              Ok, vielleicht verstehe ich ja was falsch, aber eine gewisse Zielstrebigkeit könnte helfen und würde auch zu echten Ergebissen führen.

              Trotzdem danke für deinen Betrag.

              PS.
              Wenn ich mich eben im Ton vergriffen haben sollt, bitte ich das zu erschuldigen. Aber diese fruchtlosen Diskussionen regen mich wirklich auf und kosten einfach nur Zeit.
              Vielleicht sollte ich solche Antworten in Zukunft einfach ignorieren, was ich aber auch als unhöflichen empfinden würde.

              1. Genau. Ich fand das andere aber übersichtlicher.

                Da ist die Frage welche Logik ist dahinter?
                Willst du den 3. Anker in einem li-Element?
                Dann geht so etwas
                document.getElementsByTagName('li')[index].getElementsByTagName('a')[2];

                Genau das ging beim IE, aus welchem Grund auch immer nicht. (*1)

                Kann ich mir nicht vorstellen, da ich bisher immer so gearbeitet habe und noch nie Probleme damit hatte.

                oder suchst du den 2. Anker in einem sub-Element

                Wenn du die für dich nicht hilfreiche Struktut mal genau angesehen hättest, dann hättest du erkannt, wo ich kann will/muss. Es ist steh dort sogar im Klartest.

                Für mich ist diese Struktur nicht verständlich und du schreibst nur was du willst aber für mich ist es nicht ersichtlich welche Logik dahinter steckt, ausser du sagst sie uns.

                Mein ursprüngliche Frage war allerdings auch eine ganz andere - bitte nochmal von vorne lesen.
                Die Diskussion über getElementDINGSBUMS1/DINGSBUMS2 oder childNodes ist für meine eigentlich Frage wenig hilfreich und für mich auch recht zeitraubend.

                Für mich ist es auch zeitraubend deine ausschweifenden Erläuterungen zu verstehen, die nicht auf den Punkt kommen.

                Warum kann man sich hier nicht auf meine ursprüngliche Frage beziehen?

                Weil die Frage einfach zu beantworten ist, bei mir funktionert das umwandeln eines Links in ein Blockelement ohne Probleme im IE genauso wie im FF, ein einfacher test sieht so aus:

                window.onload = function() {  
                alert('vorher');  
                for(var i = 0; i < document.links.length; i++) {  
                document.links[i].style.display = 'block';  
                }  
                };  
                
                

                Ok, vielleicht verstehe ich ja was falsch, aber eine gewisse Zielstrebigkeit könnte helfen und würde auch zu echten Ergebissen führen.

                Das sehe ich genauso, ich vermisse diese Zielstrebigkeit in deinen Beiträgen, sie sind langatmig und kaum nachzuvollziehen.

                Vielleicht sollte ich solche Antworten in Zukunft einfach ignorieren, was ich aber auch als unhöflichen empfinden würde.

                Kein Problem, deine Fragen zu ignorieren ist aufgrund der Unverständlichkeit auch nicht sonderlich schwer.

                Struppi.

                1. Genau. Ich fand das andere aber übersichtlicher.

                  Da ist die Frage welche Logik ist dahinter?
                  Willst du den 3. Anker in einem li-Element?
                  Dann geht so etwas
                  document.getElementsByTagName('li')[index].getElementsByTagName('a')[2];

                  Genau das ging beim IE, aus welchem Grund auch immer nicht. (*1)

                  Kann ich mir nicht vorstellen, da ich bisher immer so gearbeitet habe und noch nie Probleme damit hatte.

                  Ich aber nun mal so, ist aber derzeit mich meine Fragestellung.

                  oder suchst du den 2. Anker in einem sub-Element

                  Wenn du die für dich nicht hilfreiche Struktut mal genau angesehen hättest, dann hättest du erkannt, wo ich kann will/muss. Es ist steh dort sogar im Klartest.

                  Für mich ist diese Struktur nicht verständlich und du schreibst nur was du willst aber für mich ist es nicht ersichtlich welche Logik dahinter steckt, ausser du sagst sie uns.

                  Mein ursprüngliche Frage war allerdings auch eine ganz andere - bitte nochmal von vorne lesen.
                  Die Diskussion über getElementDINGSBUMS1/DINGSBUMS2 oder childNodes ist für meine eigentlich Frage wenig hilfreich und für mich auch recht zeitraubend.

                  Für mich ist es auch zeitraubend deine ausschweifenden Erläuterungen zu verstehen, die nicht auf den Punkt kommen.

                  Warum kann man sich hier nicht auf meine ursprüngliche Frage beziehen?

                  Weil die Frage einfach zu beantworten ist, bei mir funktionert das umwandeln eines Links in ein Blockelement ohne Probleme im IE genauso wie im FF, ein einfacher test sieht so aus:

                  window.onload = function() {

                  alert('vorher');
                  for(var i = 0; i < document.links.length; i++) {
                  document.links[i].style.display = 'block';
                  }
                  };

                  
                  >   
                  > > Ok, vielleicht verstehe ich ja was falsch, aber eine gewisse Zielstrebigkeit könnte helfen und würde auch zu echten Ergebissen führen.  
                  >   
                  > Das sehe ich genauso, ich vermisse diese Zielstrebigkeit in deinen Beiträgen, sie sind langatmig und kaum nachzuvollziehen.  
                    
                  Dann sage das doch deutlich und ich werde mich bemühen das zu ändern.  
                    
                  
                  >   
                  > > Vielleicht sollte ich solche Antworten in Zukunft einfach ignorieren, was ich aber auch als unhöflichen empfinden würde.  
                  >   
                  > Kein Problem, deine Fragen zu ignorieren ist aufgrund der Unverständlichkeit auch nicht sonderlich schwer.  
                    
                  Ach ein Weg.  
                    
                  
                  >   
                  > >   
                  > Struppi.  
                    
                  Egal, ich will hier nun keinen Streit vom Zaun brechen.  
                  Ich werde mich bemühen präziser zu sein und hoffe auf zielführende Antworten nach dem Muster: (hoffentlich) klare Fragestellung = klare Antwort - ansonsten, bei Unverständlichkeiten bitte einfach mal nachfragen.  
                    
                  In diesem Betrag ist an dieser Stelle für mich das Ende gekommen - Punkt.
                  
              2. Wenn du die für dich nicht hilfreiche Struktut mal genau angesehen hättest, dann hättest du erkannt, wo ich kann will/muss. Es ist steh dort sogar im Klartest.

                Ich hab mir jetzt den gnazen Thrread mehrfach durchgelesen und ich erkenne nach wie vor nicht was du erreichen willst. Da steht im Klartext welches Element du im DOM inspektor willst, aber das interessiert ja nicht, die Frage war welche Struktur du hast und nach welchen Kritierien du dein Element suchst. Ich habe dir eine ganz normale Frage bezüglich dieses Sachverhalts gestellt und du kannst sie nicht beantworten?

                document.getElementsByTagName('li')[index].getElementsByTagName('sub')[0].getElementsByTagName('a')[1];

                Ich würde nicht mit Nodes und Childes arbeiten, da die Browser zuviele Unterschiede machen was ein Child ist und was nicht.

                *1)
                Wenn du dir dir Mühe gemacht hättest alles zu lesen, was hier vor deinem Posting geschrieben wurde, dann hättest du sicherlich bemerkt, das ich das für den IE4-7 und den Rest der Browserwelt jeweils anders gelöst habe, wie ja auch auch dem Sourcecode meines Funktion hervorgeht. Und das war auch nicht meine

                deine?
                Ich versteh nicht warum du das machst und es geht auch nicht aus deinen bisherigen Äußerungen hervor (sowas wie, es funktionierte nicht ist kein
                hilfreicher Hinweis sondern deutet darauf hin dass du etwas falsch machst oder etwas verschweigst was sichtig wäre), es ist umständlich und wie du merkst fehleranfällig, ich habe dir einen einfacheren und funktionierenden Vorschlag gemacht, warum du du mich deshalb anpflaumst bleibt mir ein Rätsel.

                Struppi.

                1. Wenn du die für dich nicht hilfreiche Struktut mal genau angesehen hättest, dann hättest du erkannt, wo ich kann will/muss. Es ist steh dort sogar im Klartest.

                  Ich hab mir jetzt den gnazen Thrread mehrfach durchgelesen und ich erkenne nach wie vor nicht was du erreichen willst. Da steht im Klartext welches Element du im DOM inspektor willst, aber das interessiert ja nicht, die Frage war welche Struktur du hast und nach welchen Kritierien du dein Element suchst.

                  Und genau das war nie meine Frage, es war deine Frage - die mich aber leider nicht weitergebracht hat.

                  Ich habe dir eine ganz normale Frage bezüglich dieses Sachverhalts gestellt und du kannst sie nicht beantworten?

                  Weil das völlig unerheblich ist - zumindest aus meiner Sicht, die zugegebener maßen nicht zwingend richtig sein muß.

                  document.getElementsByTagName('li')[index].getElementsByTagName('sub')[0].getElementsByTagName('a')[1];

                  Ich würde nicht mit Nodes und Childes arbeiten, da die Browser zuviele Unterschiede machen was ein Child ist und was nicht.

                  *1)
                  Wenn du dir dir Mühe gemacht hättest alles zu lesen, was hier vor deinem Posting geschrieben wurde, dann hättest du sicherlich bemerkt, das ich das für den IE4-7 und den Rest der Browserwelt jeweils anders gelöst habe, wie ja auch auch dem Sourcecode meines Funktion hervorgeht. Und das war auch nicht meine

                  deine?
                  Ich versteh nicht warum du das machst und es geht auch nicht aus deinen bisherigen Äußerungen hervor (sowas wie, es funktionierte nicht ist kein
                  hilfreicher Hinweis sondern deutet darauf hin dass du etwas falsch machst oder etwas verschweigst was sichtig wäre), es ist umständlich und wie du merkst fehleranfällig, ich habe dir einen einfacheren und funktionierenden Vorschlag gemacht, warum du du mich deshalb anpflaumst bleibt mir ein Rätsel.

                  Entschuldigung, anpflaumen wollte ich dich nicht.
                  Es ist nur so, das die Mehrheit der Antworten (nicht nur deine), sich nur auf meine ursprüngliche Fragestellung beziehen.
                  Es ging nie darum, das ein das gewünschte Element nicht addressiren konnte, sondern nur darum, das ich bei einem A-Tag die Eigenschaft STYLE.DISPLAY nicht auf 'block' eingestellt bekomme - und zwar nur im IE (bei mir IE7). Nur darauf hätte ich gerne eine Antwort gehabt.

                  Bitte, ich wollte dich nicht angreifen, sondern nun kundtun, das mir deine Ausführungen leider nicht weiterhelfen (können).
                  Trotzdem, danke für dein Mühe und Zeit.
                  Aber ich denke, das zumindest wir beide hier nicht weiter kommen werden.
                  Trotz allem, wünsche ich dir eine schönen Sonntag.

                  Struppi.

                  EightBitWitch (Valerie)

                  1. Es ist nur so, das die Mehrheit der Antworten (nicht nur deine), sich nur auf meine ursprüngliche Fragestellung beziehen.
                    Es ging nie darum, das ein das gewünschte Element nicht addressiren konnte, sondern nur darum, das ich bei einem A-Tag die Eigenschaft STYLE.DISPLAY nicht auf 'block' eingestellt bekomme - und zwar nur im IE (bei mir IE7). Nur darauf hätte ich gerne eine Antwort gehabt.

                    OK, ich hab dir in meinem anderen Posting ein Beispiel gezeigt, was bei mir tadellos funktioniert. Daher meine Vermutung dass du mit deinen gewurschteln aus Node Objekten nicht auf das A-Tag zugreifst.

                    Aber ich denke, das zumindest wir beide hier nicht weiter kommen werden.

                    Naja, das liegt meines erachtens auch daran, dass du dir nicht die Mühe machst auf Vorschläge einzugehen.

                    Struppi.