Onmiddellijk eerste onderliggende element ophalen

Ik schrijf een scriptextensie voor Chrome-inhoud en ik moet een specifiek element kunnen targeten dat helaas geen unieke ID’s heeft, behalve het bovenliggende element.

Ik moet het directe eerste onderliggende element van parentElementtargeten. console.log(parentElement)rapporteert perfect beide onderliggende elementen/nodes, maar de volgende consolelogs (degene die gericht zijn op de childNodes) retourneren altijd een undefinedwaarde, ongeacht wat ik doe.

Dit is mijn code tot nu toe
(Ik heb de echte namen weggelaten om verwarring en extra, onnodige uitleg te voorkomen)

function injectCode() {
    var parentElement = document.getElementsByClassName("uniqueClassName");
    if (parentElement && parentElement.innerHTML != "") {
        console.log(parentElement);
        console.log(parentElement.firstElementChild);
        console.log(parentElement.firstChild);
        console.log(parentElement.childNodes);
        console.log(parentElement.childNodes[0]);
        console.log(parentElement.childNodes[1]);
    } else {
        setTimeout(injectCode, 250);
    }   
}

Hoe selecteer ik het eerste onderliggende element/knooppunt van parentElement?

Bijwerken:
parentElement.children[0]heeft ook dezelfde fout als parentElement.childNodes[0].


Antwoord 1, autoriteit 100%

Beide geven je het eerste onderliggende knooppunt:

console.log(parentElement.firstChild); // or
console.log(parentElement.childNodes[0]);

Als je het eerste onderliggende element nodig hebt dat een elementknooppunt is, gebruik dan:

console.log(parentElement.children[0]);

Bewerken

Ah, ik begrijp je probleem nu; parentElementis een array.

Als u weet dat getElementsByClassNameslechts één resultaat zal opleveren, wat zo lijkt als je dat doet, zou je [0]moeten gebruiken om het element te verdrijven (ja, ik heb dat woord verzonnen):

var parentElement = document.getElementsByClassName("uniqueClassName")[0];

Other episodes