EightBitWitch: Probleme mit dem IE7 und keine Idee mehr

Hallo,

ich habe eine kleines Script bzw. ein Funktion geschrieben, die ein HTML-Dokument nach dem laden ändern soll.
Warum ist das mache? Es ist quasi ein Facelifting des Layouts das nicht gefällt und wo ich auf bestimmte Teile des HTML keine Zugriff habe und mit CSS keinen Zugang habe, da diese Teile von einer anderen Quelle eingefügt werden. D.h. ich habe eine HTML-Datei wo es Platzhalter gibt, die von Server mit HTML-Inhalt gefüllt werden. Das ist ist dem Blog-System, wo ich meine Blogs führe nunmal so und kann derzeit nicht geändert werden.
Ich hoffe das ihr mir bis hierhin folgen konntet.

Nun das eigentliche Problem - Ich habe folgenden Code:

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');

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
        var d=c[i].childNodes[4];
      } else {
        //Für den Rest der Browserwelt
        var d=c[i].lastChild;
      }
      //d.style.border='1px solid red';
      d.style.display='block';
      d.style.marginTop='-6px';
      d.style.borderBottom='1px solid #d08020';
      d.style.paddingBottom='2px';
    } else {
      c[i].className='LastListItem';
    }
  }
}

function isIE4bis7() {
  if (window.ActiveXObject) {
    return true;
  } else {
    return false;
  }
}

Von Firefox2, Opera9 und Safari3(für Windows) wird das Script richtig und vollständig abgearbeitet. Derzeit muss die FOR-Schleife zehnmal durchlaufen werden.
Der IE7 bricht das Script allerdings bereits nach dem zweiten Durchlauf der Schleife ab und zwar bei d.style.display='block';

Ich weiss nun keinen Rat mehr.

Hat jemand ne Idee, was ich da wohl falsch mache?

Normalerweise sind alle Blog-Bereiche am Anfang auf visibility:hidden; gestellt, damit durch die Layoutänderungen kein "zucken und rucken" im Browser zusehen ist und erst wenn die Änderungen an einem Blogteil gemacht sind, wird dieser wieder sichtbar. Da die Sidebar (der Teil den ich gerade in der Mache habe) bei Scriptfehlern aber da ganz unsichtbar bleibt, habe ich diese im Moment auf sichtbar gestellt, so das ich die Ergebniss zwischen IE und dem Rest vergleichen kann.

Schon mal danke im voraus für jeden Hinweis.

  1. Hier noch die HTML-Struktur, die ich bearbeite gemäß DOM-Inspector(Firefox):

    ul
      li
        a
          #text
        #text
        strong
          sub
            a
              #text
        #text
        a             //Hier bringe ich die Änderungen an.
          #text

    li
        a
          #text
        #text
        strong
          sub
            a
              #text
        #text
        a             //Hier bringe ich die Änderungen an.
          #text

    und so weiter

  2. Hi!

    Der IE7 bricht das Script allerdings bereits nach dem zweiten Durchlauf der Schleife ab

    Mit einer Fehlermeldung oder stillschweigend?
    Aktiviere das "Anzeigen von Scriptfehlern" im MSIE.
    Eventuell kannst du auch einen richtigen Debugger nutzen, wenn du das Visual Studio o.ä. installiert hast.
    Vielleicht gibt es sogar einen Debugger, den du bei Microsoft runterladen kannst. Ich meine mich, an sowas erinnern zu können...

    Hier sind zwei Artikel, die für dich interessant sein dürften:

    JavaScript Debugging von Jan Winkler

    Aus den FAQ den Newsgroup de.comp.lang.javascript:
    Wie und wo sehe ich Fehlermeldungen, mit denen man etwas anfangen kann?

    Schöner Gruß,
    rob

    1. Ich habe derzeit nur Debugtools für den Firefox, werde aber morgen mal deinen Tipps folgen.

      Ich habe das Scriptdebugging nun eingeschaltet - danke für den Hinweis - aber leider hat mir das nun auch nicht weitergeholfen:
      Der Fehler lautet "style ist null oder kein Objekt". Dieser Fler triit wie gesagt bei zweiten Schleifendurchlauf auf und zwar in der Zeile d.style.display='block';

      Die Liste, die da Element für Element durchgearbeitet wird, ist absolut gleichförming, das heisst das in jedem LI die gleiche Struktur steht.

      1. Fehler gefunden.

        Ein LI-Elementinhalt ist doch tatsächlich anders, d.h es hat wenige ChildNotes bzw. es fehlt das STRONG nebst nachfolge-TAGS.

        De Tipp mit dem Debugger war der Auslöser, um da nochmal genauer nach zu schauen.

        Das ist mir nun fast peinlich, dieses tolle Forum mit diesem Anfängerfehler behelligt zu haben....

  3. Liebe(r) EightBitWitch,

    wo ich auf bestimmte Teile des HTML keine Zugriff habe und mit CSS keinen Zugang habe, da diese Teile von einer anderen Quelle eingefügt werden. D.h. ich habe eine HTML-Datei wo es Platzhalter gibt, die von Server mit HTML-Inhalt gefüllt werden. Das ist ist dem Blog-System, wo ich meine Blogs führe nunmal so und kann derzeit nicht geändert werden.

    Na, das glaube ich Dir so nicht. Wenn Du den Dokumentenkopf erreichen kannst, dann kannst Du auch ein Stylesheet einbinden, das die Anzeige im IE korrigiert - auch in der Sidebar.

    Das Javascript kannste zu Gunsten eines CSS für den IE streichen. Ganz sicher.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Ich bin eine liebe EightBitwitch ;-)

      Hallo Felix,

      ich wüsste nicht, wie ich auf die einzelnen Elemente den Liste per CSS zugreifen könnte, da nicht jedes Listenelemente die gleiche Formatierung bekommen soll. Hier ist es das letzte Listenelement der Liste mit variierender Elementanzahl. In dem fraglichen Teil gibt es keine Auszeichnung mit class, sondern nur pure HTML-Struktur mit informativen Inhalt. Desweiteren formatiere ich nicht das gesamte Listenelement um, sondern nur eine ganzbstimmten Teil, nämlich ein Child vom LI und da das zweite A-Child. Mit li a { .... } komme ich da ja nicht weiter. Gibt es eine Möglichkleit das zweite A-Child alleine anzusprechen?

      li   ul     a ...     #text     strong ...     #text     a ... <---- Hier muss ich ran.

      Wenn es da tatsächlich eine Möglichkeit gibt, so bin ich an dieser sehr interessiert.

      ICh bin wie immer, für alle Tipps dankbar - denn ich lerne noch. Mit HTML/CSS und JavaScript/DOM beschäftige ich mich erst seit vier Wochen ersthaft. Ansonsten programmieren ich seit über 20 Jahren 8-Bit Rechner ala ATARI 800XL ;-)

      Liebe(r) EightBitWitch,

      wo ich auf bestimmte Teile des HTML keine Zugriff habe und mit CSS keinen Zugang habe, da diese Teile von einer anderen Quelle eingefügt werden. D.h. ich habe eine HTML-Datei wo es Platzhalter gibt, die von Server mit HTML-Inhalt gefüllt werden. Das ist ist dem Blog-System, wo ich meine Blogs führe nunmal so und kann derzeit nicht geändert werden.

      Na, das glaube ich Dir so nicht. Wenn Du den Dokumentenkopf erreichen kannst, dann kannst Du auch ein Stylesheet einbinden, das die Anzeige im IE korrigiert - auch in der Sidebar.

      Das Javascript kannste zu Gunsten eines CSS für den IE streichen. Ganz sicher.

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.