Adrian: Streifen

Ich habe eine Seite auf der eine Liste von Links auf Datensätze ist. Wenn man einen von ihnen anklickt wird ein Popup geöffnet in dem man die Daten bearbeiten oder löschen kann.Dieses Popup ändert dann die Liste auf der Seite entsprechend. Das klappt auch alles soweit. Aber die Links haben alternierende Hintergrundfarbe, damit man sie besser lesen kann und ich kriege es nicht hin das die Streifen richtig gesetzt werden wenn ein Datensatz gelöscht wird. Die Datensätze nach dem Gelöschten, haben überhaupt keine Hintergrundfarbe mehr.

Hier ist mein Code, der nach dem Löschen ausgeführt wird:

alert("Der Datensatz wurde aus der Datenbank gelöscht");
var liste = opener.document.getElementById("id_datenliste");;
for(var i =0; i< liste.childNodes.length;i=i+1)
{
 var c_node = liste.childNodes[i];
 if(c_node.href == "javascript:OpenDatensatzPopUp('4')")
 {
   var c_class= c_node.className;
   for(var j = i+1;j < liste.childNodes.length;j=j+1)
   {
     var t_node = liste.childNodes[j];
     alert('1. ' +c_class);
     var t_class = t_node.className;
     alert('2. ' +t_class);
     t_node.className= c_class;\n";
     c_class = t_class;
   }
   liste.removeChild(c_node);
   break;
   }
}
window.close();

  1. hi,

    Hier ist mein Code, der nach dem Löschen ausgeführt wird:

    Der enthält noch einen dicken Syntaxfehler, so dass da eigentlich gar nichts ausgeführt werden dürfte:

    alert('2. ' +t_class);
         t_node.className= c_class;\n";

    Außerdem wäre es schön, wenn du uns beschreiben würdest, was dein Script genau machen soll und wie.
    Ich kann es mir zwar in etwa vorstellen, würde es aber gerne erst mal von dir hören.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Hier ist mein Code, der nach dem Löschen ausgeführt wird:

      Der enthält noch einen dicken Syntaxfehler, so dass da eigentlich gar nichts ausgeführt werden dürfte:

      alert('2. ' +t_class);
           t_node.className= c_class;\n";

      »»
      Das \n"; ist vom PHP übrig geblieben.Eigentlich steht in der Datei

      echo "t_node.className= c_class;\n";

      Außerdem wäre es schön, wenn du uns beschreiben würdest, was dein Script genau machen soll und wie.
      Ich kann es mir zwar in etwa vorstellen, würde es aber gerne erst mal von dir hören.

      Das Script geht durch alle Link der Liste  bis es den Link findet der den gelöschten Datensatz öffnet.Dann geht es die nachfolgenden Links durch,wobei es die Hintergrundfarben einen Link nach unten verschieben soll.
      Am Ende wird der Link gelöscht und das Popup geschlossen.

      1. hi,

        Das Script geht durch alle Link der Liste  bis es den Link findet der den gelöschten Datensatz öffnet.Dann geht es die nachfolgenden Links durch,

        Debug-Schritt #1: Tut es das denn auch korrekt?

        Da würde ich doch in folgender Schleife:

        for(var j = i+1;j < liste.childNodes.length;j=j+1)
           {

        mir erst mal mit alert ausgeben lassen, welche Element da durchlaufen werden (indem du z.b. ihren Typ und den Inhalt ihres href-Attributes ausgeben lässt). Sind das wirklich genau die Links, die betroffen sein sollen?

        Die Datensätze nach dem Gelöschten, haben überhaupt keine Hintergrundfarbe mehr.

        Gut, wenn obige Kontrolle erfolgreich war - dann schau jetzt innerhalb der Schleife mal nach, ob auch der Klassename, der zugewiesen werden soll, dem gewünschten entspricht.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Danke.

          Ich habe heraus gefunden woran es lag, jeder 2. Knoten hat undefined bei className zurückgeliefert.Ich denke das dies die Textknoten aus den Links sind.Ich habe es jetzt so gelöst das geprüft wird ob className ein Ergebnis zurückliefert,bevor die Farben geändert werden

          1. hi,

            Ich habe heraus gefunden woran es lag, jeder 2. Knoten hat undefined bei className zurückgeliefert.Ich denke das dies die Textknoten aus den Links sind.

            Ja, das ist einer der Nachteile, wenn man einfach die childNodes komplett durchläuft, obwohl man doch eigentlich nur an Knoten eines ganz bestimmten Typs interessiert ist.

            Das könntest du umgehen, in dem du stattdessen einfach mit getElementsByTagName() dir gleich eine Collection besorgst, die ausschließlich die Links unterhalb eines bestimmten Elementes enthält.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }