Saya membuat skrip untuk menambahkan atribut untuk beberapa elemen. Dan saya ingin itu berhasil untuk elemen yang ditambahkan secara dinamis. Saya ingin menggunakan Mutation Observe, tetapi saya mendapatkan kesalahan ini: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'.

Kode yang saya gunakan:

const langAdding = (tag) => {
    tag.setAttribute('lang', 'en-us');
}

const target = document

const callback = (mutations, observer) => {
    mutations.forEach(mutation => {
        switch (mutation.type) {
            case 'childList':
                for (const el of mutation.addedNodes) {
                    if (!el.hasAttribute("lang")) {
                        el = langAdding(el) 
                    } else if (el.firstElementChild) {
                        for (const child of el.getElementsByTagName('p')) {
                            child = langAdding(child);
                    }
                }
                break;
        }
    })
}

const observer = new MutationObserver(callback);

observer.observe(target, {
    childList: true,
    attributes: true,
    characterData: true,
    subtree: true
});

Dan saya benar-benar tidak tahu apakah saya melakukan semuanya dengan benar. Tolong bantu saya jika Anda menemukan kesalahan

1
Vla2d 23 Mei 2020, 04:43

1 menjawab

Jawaban Terbaik

Kode dalam pertanyaan berfungsi dengan benar, saya hanya perlu menghapus baris terakhir dalam kode (observer.disconnect()) dan saya sangat berterima kasih atas bantuan @wOxxOm, yang membantu mengerjakan ulang panggilan balik.

0
Vla2d 25 Mei 2020, 19:12