'Get id of child elements

I need to get the id from all the child elements, which are in the parent class = "demo", but if the parent class = "demo" has id = "simone" I don't need to get the child id. How to achieve this?

If is simone, don't get children's id, else get children's id?

       var name;
     var divsname = document.querySelectorAll('.demo *');
     divsname.forEach(function(div){
        
        if (div.hasAttribute("id")) {
        name += "Name: "+div.getAttribute("id")+", "; 
        }else{
            
        }
        document.getElementById("get-demo").innerHTML = name;
    console.log(name);
     });
<div id="maja" class="demo"><div id="maja-child"></div></div>
<div id="alex" class="demo"><div id="alex-child"></div></div>
<div id="simone" class="demo"><div id="simone-child"></div></div>
<div id="pit" class="demo"><div id="pit-child"></div></div>

<div id="get-demo"></div>


Solution 1:[1]

welcome to stackoverflow borma ;)

just use parentElement.getAttribute("id"),

ParentElement() will retrun parent of child element you can use exeption

div.parentElement.getAttribute("id") !== "simone"

will return false if id is simone.

Example

if (div.hasAttribute("id") && div.parentElement.getAttribute("id") !== "simone") {
      name += "Name: "+div.getAttribute("id")+", "; 
} 

This full script

window.onload = () => 
{
var name = '', divsname = document.querySelectorAll('.demo *');

 divsname.forEach(function(div){
    if (div.hasAttribute("id") && div.parentElement.getAttribute("id") !== "simone") {
      name += "Name: "+div.getAttribute("id")+", "; 
    } 
    document.getElementById("get-demo").innerHTML = name;
 });
}

Solution 2:[2]

You can use the css :not selector and exclude the id simone.

       var name;
     var divsname = document.querySelectorAll('.demo:not(#simone) *');
     divsname.forEach(function(div){
        
        if (div.hasAttribute("id")) {
        name += "Name: "+div.getAttribute("id")+", "; 
        }else{
            
        }
        document.getElementById("get-demo").innerHTML = name;
    console.log(name);
     });
<div id="maja" class="demo"><div id="maja-child"></div></div>
<div id="alex" class="demo"><div id="alex-child"></div></div>
<div id="simone" class="demo"><div id="simone-child"></div></div>
<div id="pit" class="demo"><div id="pit-child"></div></div>

<div id="get-demo"></div>

Solution 3:[3]

You can use @jkoch answer or if you need to do something with any div with id 'simone' you can filter it within the forEach callback function. The name variable I set to a blank "" to avoid getting 'result' in the name variable.

var name = ""
     var divsname = document.querySelectorAll('.demo');
     divsname.forEach(function(div){
        
        if (div.id !== 'simone') {
        name += "Name: "+div.id+", "; 
        }else{
            //code if you want to do something with simone id
        }
        document.getElementById("get-demo").innerHTML = name;
            console.log(name);
     });

Solution 4:[4]

This should work.

document.querySelectorAll(".demo").forEach((item) => {
  if (item.id !== "simone") {
    console.log(item.firstChild.id);
  }
});
    <div id="maja" class="demo"><div id="maja-child"></div></div>
    <div id="alex" class="demo"><div id="alex-child"></div></div>
    <div id="simone" class="demo"><div id="simone-child"></div></div>
    <div id="pit" class="demo"><div id="pit-child"></div></div>

    <div id="get-demo"></div>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 il_leandra
Solution 2 jkoch
Solution 3 sychordCoder
Solution 4 OndrejHj04