@Valery23

Как повесить MutationObserver на мой скрипт?

Есть код (приведу ниже), он скрывает div, если его числовое значение меньше 1. Подскажите пожалуйста, как применить MutationObserver, что бы в результате он реагировал на изменения числового значения (без перезагрузки страницы), и в случае смены значения на 0 мой скрипт срабатывал?

let span = document.querySelectorAll(".yith-wcwl-items-count");
for (let i = 0; i < span.length; i++) {
  let isEmpty = Number( span[i].textContent ) === 0;
  span[i].classList[ isEmpty ? "add" : "remove" ]("hidden");
}
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
XanXanXan
@XanXanXan
const target = document.querySelector(''); //наблюдаемый элемент

const observer = new MutationObserver(mutationsList => {
  mutationsList.forEach(({ target }) => {
    if (!target.classList.contains('yith-wcwl-items-count')) return;
    const isEmpty = target.textContent.trim() === '0';
    target.classList.toggle('hidden', isEmpty);
  })
});

observer.observe(target, { childList: true, characterData: true });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@WebEagle
let parentObject = document.querySelector(/* селектор для родительского элемента, можно body*/);
let span = document.querySelectorAll(".yith-wcwl-items-count");
const config = {
    attributes: true,
    childList: true,
    subtree: true
};

// Колбэк-функция при срабатывании мутации
const callback = function(mutationsList, observer) {
    for (let i = 0; i < span.length; i++) {
        let isEmpty = Number( span[i].textContent ) === 0;
        span[i].classList[ isEmpty ? "add" : "remove" ]("hidden");
    }
};

// Создаём экземпляр наблюдателя с указанной функцией колбэка
const observer = new MutationObserver(callback);

// Начинаем наблюдение за настроенными изменениями целевого элемента
observer.observe(parentObject , config);

Как-то так, но лучше на событие изменения в элементе. или там кто этот ноль подставляет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 15:52
3000 руб./за проект
25 нояб. 2024, в 15:43
1500 руб./за проект