<line id="a35" nextLine="a45"/> <line id="a78" nextLine="a88"/> <line id="a45" nextLine="a78"/> <line id="a88"/>
Jedes Element kann nur einmal vorkommen und kann auch nur einen Nachfolger haben. Das ist eine schnurgerade Liste, da sehe ich den Nutzen einer Rekursion nicht. Fehlt irgendeine Information?
const getAllLines = function(line) {
let idList = [];
while (line) {
if (line.hasAttribute('id')) {
idList.push(line.getAttribute('id'));
}
if (line.hasAttribute('nextLine')) {
let id = line.getAttribute('nextLine');
if (! idList.includes(id)) {
line = document.getElementById(id);
}
else {
line = null;
}
else {
line = null;
}
}
}
Davon unabhängig: Die hasAttribute-Aufrufe könnten eigentlich raus, getAttribute liefert null, falls das Attribut nicht existiert. Anstatt nachzugucken, ob etwas da ist, und es dann abzufragen, kannst du auch direkt abfragen und schauen, ob dabei null rauskommt.