Finding child element of parent pure javascript

后端 未结 4 1099
逝去的感伤
逝去的感伤 2020-12-02 06:48

What would the most efficient method be to find a child element of (with class or ID) of a particular parent element using pure javascript only. No jQuery or other framework

相关标签:
4条回答
  • 2020-12-02 07:02

    Just adding another idea you could use a child selector to get immediate children

    document.querySelectorAll(".parent > .child1");
    

    should return all the immediate children with class .child1

    0 讨论(0)
  • 2020-12-02 07:05

    You have a parent element, you want to get all child of specific attribute 1. get the parent 2. get the parent nodename by using parent.nodeName.toLowerCase() convert the nodename to lower case e.g DIV will be div 3. for further specific purpose, get an attribute of the parent e.g parent.getAttribute("id"). this will give you id of the parent 4. Then use document.QuerySelectorAll(paret.nodeName.toLowerCase()+"#"_parent.getAttribute("id")+" input " ); if you want input children of the parent node

    let parent = document.querySelector("div.classnameofthediv")
    let parent_node = parent.nodeName.toLowerCase()
    let parent_clas_arr = parent.getAttribute("class").split(" ");
    let parent_clas_str = '';
      parent_clas_arr.forEach(e=>{
         parent_clas_str +=e+'.';
      })
    let parent_class_name = parent_clas_str.substr(0, parent_clas_str.length-1)  //remove the last dot
    let allchild = document.querySelectorAll(parent_node+"."+parent_class_name+" input")

    0 讨论(0)
  • 2020-12-02 07:17

    If you already have var parent = document.querySelector('.parent'); you can do this to scope the search to parent's children:

    parent.querySelector('.child')
    
    0 讨论(0)
  • 2020-12-02 07:24

    The children property returns an array of elements, like so:

    parent = document.querySelector('.parent');
    children = parent.children; // [<div class="child1">]
    

    There are alternatives to querySelector, like document.getElementsByClassName('parent')[0] if you so desire.


    Edit: Now that I think about it, you could just use querySelectorAll to get decendents of parent having a class name of child1:

    children = document.querySelectorAll('.parent .child1');
    

    The difference between qS and qSA is that the latter returns all elements matching the selector, while the former only returns the first such element.

    0 讨论(0)
提交回复
热议问题