Schönen Nachmittag,
Ich habe einen HTML-#Holder mit 5 IMGs.
Ich habe einen MutationObserver
, der die Attributveränderung von Elementen überwacht.
Diese Elemente werden in einem ObserverVar
-Objekt gesammelt, gleichzeitig wird El_Warteschleife
um 1 erhöht.
Wird eine Mutation erkannt, so kann der Observer des dazugehörigen Objekt wieder freigegeben werden (disconnect
) und El_Warteschleife
wird wieder um 1 vermindert.
...daher sollte am Ende des Tages El_Warteschleife
bei 0 angelangt sein und console.log("NULL ANGELANGT!")
triggern, das passiert aber nicht.
Zur Verdeutlichung logge ich auch das letzte Objekt mit console.log(obj)
, wodurch man schön sieht, dass die "naechsterSchritt"-Funktion VOR dem letzten Element stoppt.
Mein(e) Frage / Problem:
Warum "stoppt" meine "naechsterSchritt"-Funktion VOR dem letzten Element anstatt dass "NULL ANGELANGT!" freigegeben wird?
Danke!
let El_Warteschleife = 0;
let ObserverVar = {};
let ObjektZaehler = 0;
let ObsFunc = (obj) => {
let naechsterSchritt = () => {
console.log(obj); // letztes Objekt nicht mehr dabei!
ObserverVar[ObjektZaehler].disconnect();
El_Warteschleife--;
if (El_Warteschleife === 0) {
console.log("NULL ANGELANGT!");
}
};
Object.keys(ObserverVar).length === 0 ? ObjektZaehler = 0 : ObjektZaehler++;
let config = {};
config["attributes"] = true;
let callback = () => {
naechsterSchritt.call(null, ObserverVar);
};
ObserverVar[ObjektZaehler] = new MutationObserver(callback);
ObserverVar[ObjektZaehler].observe(obj, config);
};
let LosGehts = (arg) => {
El_Warteschleife++;
ObsFunc(arg);
arg.style["top"] = "12px";
};
let holder = document.getElementById("holder");
[...holder.children].forEach(el => {
LosGehts(el);
});