• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[JavaScript] Dynamisch hinzugefügte Elemente wieder löschen

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
Hallo Leute,

folgendes Problem.

Ich füge mit JavaScript Zeilen zu dem tbody einer Tabelle hinzu:
[src=javascript] var len = 5;
var tableBody = document.getElementById("TabellenId").getElementsByTagName("tbody")[0];
for(var i = 0; i < len; i++) {
var row = document.createElement("tr");
var td1 = document.createElement("td");
var td2 = document.createElement("td");
var td3 = document.createElement("td");

td1.innerHTML = "1";
td2.innerHTML = "2";
td3.innerHTML = "3";

row.appendChild(td1);
row.appendChild(td2);
row.appendChild(td3);

tableBody.appendChild(row);
}[/src]
Das klappt auch wunderbar.

Allerdings klappt das löschen der hinzugefügten Zeilen nicht.
Ich möchte den tbody wieder vollständig leeren. Leider haben knapp 2 Stunden Snippets verwenden, die man bei Google findet nie die Elemente gelöscht, die ich hinzugefügt habe oder nur jedes zweite oder Ähnliches. Ich bin gerade etwas verwirrt und verzweifelt.

Ein paar Beispiel-Snippets, die anscheinend nicht funktionieren:
[src=javascript]tbl=document.getElementById('idDerTabelle');

while(tbl.rows.length>0)
{
tbl.deleteRow(0);
}[/src]
[src=javascript]var new_tbody = document.createElement('tbody');
populate_with_new_rows(new_tbody);
old_tbody.parentNode.replaceChild(new_tbody, old_tbody)[/src]
[src=javascript]var parent = document.getElementById("TabellenId").getElementsByTagName("tbody")[0];
var elementsToDelete = parent.getElementsByTagName("tr");
for(var i = 0; i < elementsToDelete.length; i++) {
elementsToDelete.parentNode.removeChild(elementsToDelete);
}[/src]

Zugehöriges HTML:
[src=html4strict] <table id="TabellenId">
<thead>
<tr>
<td colspan="3">Überschrift</td>
</tr>
<tr>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
<tbody>
</tbody>
</table>[/src]

Ich weiß echt nicht mehr weiter...
Was mache ich falsch?

--- [2017-05-11 01:40 CEST] Automatisch zusammengeführter Beitrag ---

Gerade postet man es hier fällt einem der Fehler auf...
Das Array, welches ich befülle, bevor die Tabelle erzeugt/gefüllt wird, habe ich schlichtweg nicht geleert...
Dieser Code funktioniert schon mal:
[src=javascript]var tableBody = document.getElementById("TabellenId").getElementsByTagName("tbody")[0];
while(tableBody.rows.length > 0)
{
tableBody.deleteRow(0);
}[/src]
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.573
Versuchs mal mit:
[src=javascript]document.getElementById('idDerTabelle').innerHTML = "";[/src]

Das löscht allerdings auch die Zeilenköpfe, ansonsten würde ich den Tbody Tag vorher anlegen, diesen über eine fixe ID befüllen und leeren...
Außerdem könntest du als Id, um einzelnen Zeilen anzusprechen auch "table_row_NUMMER" dynamisch erzeugen lassen und der Zeile vergeben.

Die Anzahl könntest du über document.getElementById('tBodyID').children.length bekommen, das sind dann aber nur die TR Knoten, nicht deren Kindelemente.
 

Timon3

Team ModMii

Registriert
17 Juli 2013
Beiträge
499
Du kannst übrigens einfacher auf die Elemente zugreifen mittels document.querySelector - über die Funktion kannst du mittels CSS-Selektoren Elemente selektieren, genau wie bei jQuery :)
 

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
  • Thread Starter Thread Starter
  • #4
@Timon3: Das wusste ich noch gar nicht. Das klingt doch mal interessant.
 
Oben