J'écris une extension de script de contenu Chrome et je dois pouvoir cibler un élément spécifique qui, malheureusement, n'a pas d'identificateur unique, à l'exception de son élément parent.
Je dois cibler le premier élément enfant immédiat de parentElement
. console.log(parentElement)
signale parfaitement les deux éléments/nœuds enfants, mais les journaux de la console suivants (ceux qui ciblent les noeuds enfant) renvoient toujours une valeur undefined
quoi que je fasse.
C'est mon code jusqu'à présent
(J'ai exclu les noms réels pour éviter toute confusion et toute explication inutile et inutile)
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);
}
}
Comment sélectionner le premier élément/noeud enfant de parentElement
?
Mise à jour:parentElement.children[0]
a également la même erreur que parentElement.childNodes[0]
.
Ces deux vous donneront le premier noeud enfant:
console.log(parentElement.firstChild); // or
console.log(parentElement.childNodes[0]);
Si vous avez besoin du premier enfant qui est un nœud d'élément, utilisez:
console.log(parentElement.children[0]);
Modifier
Ah, je vois ton problème maintenant; parentElement
est un tableau.
Si vous savez que getElementsByClassName ne renverra qu'un seul résultat, ce qui semble être le cas, utilisez [0]
à Dearray (oui, j'ai composé cette Parole) l'élément:
var parentElement = document.getElementsByClassName("uniqueClassName")[0];