Я пытаюсь наблюдать группу элементов. Количество элементов может быть различным: от 1 до 10.Как узнать, где именно произошло MutationRecord (несколько целей)?
$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>'
Итак ..
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);
};
Когда значение в некотором элементе стало изменено, MutationRecord.type CharacterData принимается. В моем примере прямо сейчас $ observElements [1] изменяется от '35 .00 'до '25 .00'
Но как я могу знать, что эти изменения были в emelent $ observElements [1]? В полученном target.textContent i gon только текстовое значение.
Почему бы просто не использовать 'target'? Или, если вы хотите знать индекс, просто присвойте 'i' как свойство каждого элемента (например,' __index') в вашем цикле 'for'. – wOxxOm
Благодарим за сообщение. Вы можете немного объяснить? Я должен добавить свойство к наблюдаемым элементам? $ observElements [i] {'element_id': [i]} – sameuser
«Цель» - это текстовый узел в моем случае (https://developer.mozilla.org/en-US/docs/Web/API/Text). Как я могу использовать его для определения элемента, где была обнаружена мутация? – sameuser