Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get immediate first child element

Tags:

javascript

dom

I'm writing a Chrome content script extension and I need to be able to target a specific element that, unfortunately, has no unique identifiers except its parent element.

I need to target the immediate first child element of parentElement. console.log(parentElement) reports both of the child elements/nodes perfectly, but the succeeding console logs (the ones that target the childNodes) always return an undefined value no matter what I do.

This is my code so far
(I have excluded the actual names to avoid confusion and extra, unnecessary explanation)

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);     }    } 

How do I select the first child element/node of parentElement?

enter image description here

Update:
parentElement.children[0] also has the same error as parentElement.childNodes[0].

like image 753
mythofechelon Avatar asked May 06 '12 22:05

mythofechelon


People also ask

How do I get CSS only for my first child?

The :first-child selector is used to select the specified selector, only if it is the first child of its parent.

How do I select immediate child in CSS?

The child combinator ( > ) is placed between two CSS selectors. It matches only those elements matched by the second selector that are the direct children of elements matched by the first. Elements matched by the second selector must be the immediate children of the elements matched by the first selector.

Which property would you use to get the first child node of a node?

The firstChild property returns the first child node of a node. The firstChild property returns a node object.


1 Answers

Both these will give you the first child node:

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

If you need the first child that is an element node then use:

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

Edit

Ah, I see your problem now; parentElement is an array.

If you know that getElementsByClassName will only return one result, which it seems you do, you should use [0] to dearray (yes, I made that word up) the element:

var parentElement = document.getElementsByClassName("uniqueClassName")[0]; 
like image 109
Paul Avatar answered Sep 23 '22 05:09

Paul