claus ginsel: Anzahl von Kind-Elementen zählen

Beitrag lesen

Moin

ist jetzt zwar nicht besonders wichtig, aber es wurmt mich trotzdem

die Seite lädt eine Liste von Dateinamen in eine Tabelle, im Bsp 3 Dateien:

<table id="tab">
    <tr id="z_tg">
        <td>tg</td>
        <td><a href="https://" ><b>&#11123</b></a></td>
        <td><a><b id="tg">&#128465</b></a></td>
    </tr>
    <tr id="z_dg">
        <td>dg</td>
        <td><a href="https://" ><b>&#11123</b></a></td>
        <td><a><b id="dg">&#128465</b></a></td>
    </tr>
    <tr id="z_wd">
        <td>wd</td>
        <td><a href="https://" ><b>&#11123</b></a></td>
        <td><a><b id="wd">&#128465</b></a></td>
    </tr>
</table>

Die Seite sieht dann so aus (hab die vielen "d" der Übersicht halber rausgenommen aus dem Quelltext)

zeigt die Datei-Liste, im Quelltext sind nur die ersten 2 Buchstaben

Der Mülleimer dient dazu, die Datei auf dem Server löschen zu lassen per Ajax:

    let table = document.getElementById('tab');
    table.onclick = function() {    
        let ID = window.event.target.id;
        if (ID) {
            if (confirm("Die Nachricht "+ID+".pdf wird gelöscht ...") == false) {return;}

            let xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
              if (this.readyState == 4 && this.status == 200) {
                alert(xhttp.responseText);
                //Zeile im Browser löschen
                document.getElementById('z_'+ID).remove();
                alert(table.children.length); // ist immer gleich 1!
                if (table.children.length === 0) {
                    table.innerHTML='<tr><td>Keine Nachrichten</td></tr>';
                }
              }
            };
            xhttp.open("GET", "DEL.php?id=" + ID, true);
            xhttp.send();
        }
    };

Die Dateien werden gelöscht, es wird auch die betreffende Zeile im Browser gelöscht. alert gibt mir immer aus als Anzahl 1, egal wieviel Zeilen sind

Nur irgendwann ist die letzte Datei dran: nachdem ich diese gelöscht habe, wird die Zeile nicht eingefügt, alert gibt mir immer auch hier Anzahl = 1 aus.

Auf W3C gibt es ein Bsp mit children.length, da werden die p in einem div gezählt. Aber warum will JS bei mir keine tr in table zählen?

Gruß Claus

akzeptierte Antworten