Ich versuche eine Gruppe von Elementen zu beobachten. Anzahl der Elemente können vielfältig sein: von 1 bis 10.Woher genau, wo genau MutationRecord passiert ist (mehrere Ziele)?
$observedElements = document.querySelectorAll('em.price');
// in that time length will be 3.
// $observedElements[0] is a '<em class='price'>10.15</em>'
// $observedElements[1] is a '<em class='price'>35.00</em>'
// $observedElements[2] is a '<em class='price'>48.95</em>'
So ..
var observer = new MutationObserver(function(MutationRecord) {
MutationRecord.forEach(function(MutationRecord) {
if (MutationRecord.type == 'characterData') {
console.log ('got it ... in elem. № ? ');
// which element is affected by this mutation? [0], [1] or [2] ?
};
});
});
var observerConfig = { attributes: false, childList: true, characterData: true, subtree: true, };
for (var i = 0; i < $observedElements.length; i++) {
observer.observe($observedElements[i], observerConfig);
};
Wenn der Wert in einem Element geändert wurde, wird ein MutationRecord.type Character erhalten. In meinem Beispiel ändert sich $ observedElements [1] von '35 .00 'zu '25.00'
Aber wie kann ich wissen, dass diese Änderung in emelent $ observedElements [1] war? In empfangenen target.textContent gab ich nur Textwert.
Warum nicht verwenden Sie einfach 'target' finden? Oder wenn Sie den Index kennenlernen möchten, weisen Sie einfach "i" als Eigenschaft jedes Elements (z. B. "__index") in Ihrer "for" -Schleife zu. – wOxxOm
Vielen Dank für die Antwort. Kannst du etwas erklären? Ich sollte beobachteten Elementen eine Eigenschaft hinzufügen? $ observedElements [i] {'element_id': [i]} – sameuser
Ein 'target' ist in meinem Fall ein Textknoten (https://developer.mozilla.org/en-US/docs/Web/API/Text). Wie kann ich das Element bestimmen, an dem die Mutation entdeckt wurde? – sameuser