Rolf B: Fußweg, Vanille

Beitrag lesen

problematische Seite

Hallo Linuchs,

danke, so funktioniert es:

Nein. Frag mal nach arr_playlists[1].length

Jetzt weiß ich auch, was schief geht. arr_playlists ist eine Nodelist und kein Array. Deswegen geht das Zuweisen einer Nodelist von li Elementen an arr_playlists[i] nicht - eine Nodelist ist readonly und Zuweisungen werden ignoriert.

arr_playlists[0] ist das HTMLElement Objekt, das zum ersten div mit playlist Klasse gehört. Wenn Du an arr_playlists[i][0] etwas zuweist, bekommt dieses HTMLElement Objekt ein Property namens "0" verpasst.

Mach also ein Array draus:

var arr_playlists  = Array.from(document.querySelectorAll(".playlist"));

Äh - var ist was für Opa - was uns beide zwar nicht stört, weil wir beide alt genug sind, um einer sein zu können, aber trotzdem...

const arr_playlists  = Array.from(document.querySelectorAll(".playlist"));

Äh - Array.from rafft kein Internet Explorer, und dann kann man auch den Spread-Operator nehmen:

const arr_playlists  = [... document.querySelectorAll(".playlist") ];

Äh - ich war ja schon bei Array.prototype.map, und das ist immer noch sinnvoll:

const arr_playlists = Array.prototype.map.call(
   document.querySelectorAll(".playlist"),
   playlist => [... playlist.querySelectorAll("li") ]
);

Damit solltest Du ein 2D Array aller li Elemente erhalten. Ich bin allerdings nicht sicher, ob das im Ergebnis zu einer ordentlichen Softwarearchitektur für die ganze Seite führt, dazu habe ich mir das noch nicht genau genug angeschaut. Ich würde aber annehmen, dass ein Array, dass die Einträge mehrerer Playlists sammelt, auf ein COBOL-Programmdesign schließen lässt.

Meine erste Chefin sagte immer: Ein guter COBOL-Programmierer schreibt in jeder Programmiersprache COBOL-Programme…

Was sich umdrehen lässt. Wenn einem JavaScript-Programmierer COBOL zustößt, versucht er auch dort, JavaScript-Idiome zu verwenden. Wogegen sich COBOL aber tretend und kreischend zur Wehr setzt 😂 und protestiert, dass Oma Grace dabei in 3 Achsen im Grab rotiere!!!

Rolf

--
sumpsi - posui - obstruxi