Ich befürchte, Dir fehlt zu viel Verständnis für JavaScript, kann das sein?
In #1 machst Du folgendes:
var shadow = document.getElementsByClassName('shadow-primary');
Das liefert Dir eine NodeList in der Variablen shadow, die Du dann mit einer for-Schleife iterierst, bis dahin richtig:
for (var j = 0; j < shadow.length; j++) {
// ...
}
Du hast in jedem Schleifendurchlauf genau ein Element aus der NodeList, in deinem Fall also jedesmal ein HTMLDivElement. Du versuchst aber dieses HTMLDivElement als Funktion aufzurufen:
Ganz egal, was Du mit dem log.bind() vorhast, es funktioniert so nicht.
Ich bin ehrlich, ich habe noch nicht so ganz verstanden, was Du am Ende erreichen willst, aber dass es so wie Du es machst nicht geht ist erkennbar und ich behaupte auch, dass Dein Ziel einfacher zu erreichen wäre. Wenn Du Lust hast, kannst Du es ja nochmal etwas detaillierter erklären?
Um darauf noch einzugehen:
Kann es sein, dass mein Code zwar korrekt ist aber ich von
document.querySelectorAll
kein Array zurück bekomme?
Wenn dem der Fall ist wie kann ich das Objekt in ein Array umwandeln?
Grundsätzlich bekommst Du von keiner Selektor-Methode ein Array zurück, es wird immer ein Element oder eine NodeList sein.
Solange Du mi einer for-Schleife darüber iterierst, kannst Du mit shadow[i] auf jedes Element zugreifen.
Wenn Du ein Array haben willst, musst Du das slicen:
var _elements = document.querySelector('div');
var _elementsArray = Array.prototype.slice.call(_elements);