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

Beitrag lesen

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.