定位 找到那个DOM

一.查找HTML元素的方法

为了操作DOM中的元素,你必须选择该特定元素,你可以使用以下document.querySelector从页面中选择节点

1.1 querySelector--从页面中选择单个节点

document.querySelector("CSS 选择器");

querySelector方法需要一个CSS选择器,用来从HTML中找到满足你要求的元素

如果你有多个项目满足您指定的CSS选择器,则只返回第一个满足条件的元素

        <p>返回满足条件的第一个元素</p>
        
    <script>
    
      const p=document.querySelector("p");
      console.log(p);

1.2 querySelectorAll()--返回满足条件的所有元素

        <p>返回满足条件的所有元素</p>

    <script>

      const p=document.querySelectorAll("p");
      console.log(p);

1.3 getElementById()

<p id="calssp">返回满足条件的元素</p>

<script>
const elep=document.getElementById("calssp");
console.log(elep);

 

 

如果没有元素满足条件,则返回

 

 

 

1.4 getElementsByClassName()

        <ul class="classul">
          <li>The</li>
          <li>test</li>
        </ul>
        <ul class="classul">
          <li>has</li>
          <li>passed</li>
        </ul>
    <script>
    
    const elid=document.getElementsByClassName("classul");
    console.log(elid);

1.5 getElementsByTagName()

        <ul class="classul">
          <li>The</li>
          <li>test</li>
        </ul>
        <ul >
          <li>has</li>
          <li>passed</li>
        </ul>
    <script>
    
    const elid=document.getElementsByTagName("li");
    console.log(elid);

二、CSS选择器

2.1 标记选择器

标记名称

<form>This is a form</form>
<script>
  const form = document.querySelector("form");
</script>

2.2 ID选择器

<div id="sidebar">id选择器需要在名字前加一个#</div>
        <script>
          const elem = document.querySelector("#sidebar");
          console.log(elem)
        </script>

2.3 类选择器

        <div class="active">类选择器前面需要加点号</div>
        <script>
          const elem = document.querySelector(".active");
          console.log(elem);
        </script>

 

 

 

 

2.4 后代选择器

        <ul>
          <li>具体项目</li>
        </ul>
        <script>
          const elem = document.querySelectorAll("ul li");
          console.log(elem);
        </script>

  2.5 属性选择器

<input type="text" placeholder="Your name here" disabled />
        <script>
          const elem=document.querySelector("[disabled]");
          console.log(elem);
        </script>

元素选择器 h1,p 选择所有的h1和p元素
ID选择器 #idname 选择id="idname"的元素
类选择器 .classname 选择class=“classname"的所有元素
后代选择器 div p 选择div元素内的所有p元素
属性选择器 title 选择所有属性里表明有title的所有元素
子选择器 div>p 选择父元素是div的所有p元素
相邻兄弟选择器 div+p 选择所有紧邻div元素之后的每个p元素
通用兄弟选择器 p~ul 选择前面有p元素的每个ul元素

 

三、节点列表(nodeList)与集合

使用querySelector返回的是节点列表,这是一个DOM元素的集合,包含一个或多个DOM元素的变量。该列表对象类似于数组,但它不是一个数组

将节点列表转化为对象

NodeList是类数组,只支持.length .forEach().但是出于某种原因你想使用.map()和 .filter呢?为了做到这一点,您必须将NodeList转化为一个数组。

使用数组展开语法,将NodeList转化为一个数组,该语法将NodeList的每一项展开为一个新数组

const divs = document.querySelectorAll("div"); // NodeList
const items = [...divs]; // Array

还有一种方法是可以使用Array.from()将节点集合转换为数组

const divs = document.querySelectorAll("div"); // NodeList
Array.from(document.body.divs); // Array

集合

使用getElementsByTagName或getElementsByClassName得到的是一个元素集合

    <div id="contents">
            <ul class="list">
                <li class="listi">待办事项清单</li>
                <li class="listi">愿望清单</li>
            </ul>
        </div>
        <script type="text/javascript">
              let divs = document.getElementsByTagName('div');
              console.log(divs.length);//1
        </script>
        
        <div>Second div</div>
        
        <script>
            console.log(divs.length);//2

 

<div id="contents">
            <ul class="list">
                <li class="listi">待办事项清单</li>
                <li class="listi">愿望清单</li>
            </ul>
        </div>
        
        <script type="text/javascript">
              let divs = document.querySelectorAll('div');
              console.log(divs.length);
        </script>
        
        <div>Second div</div>
        
        <script>
            console.log(divs.length);

四、遍历DOM树

将学习遍历DOM。如,如何达到父元素以及如何找到与某个选择器匹配的“最近”父元素

寻找父节点

4.1 elem.matches(css)

不会查找任何内容,它只会检查elem是否与给定的CSS选择器匹配。返回false或true

当我们遍历元素(例如数组或其他内容)并试图过滤那些我们感兴趣的元素时,这个方法会很有用

<a href="http://example.com/file.zip">...</a>
<a href="http://ya.ru">...</a>

<script>
  // 不一定是 document.body.children,还可以是任何集合
  for (let elem of document.body.children) {
    if (elem.matches('a[href$="zip"]')) {
      alert("The archive reference: " + elem.href );
    }
  }
</script>

4.2 element.parentElement--返回当前元素的父元素

        <div id="contents">
            <ul class="list">
                <li class="listi">待办事项清单</li>
                <li class="listi">愿望清单</li>
            </ul>
        </div>
        <script>
            let listi=document.querySelector(".listi");
            parentEle=listi.parentElement;
            console.log(parentEle);

4.3 element.closets("CSS选择器")

元素的祖先是:父级,父级的父级,它的父级等。祖先们一起组成了元素到顶端的父级链,elem.closest(css)方法会查找与css选择器匹配最近的祖先,elem也会被搜索

检查每个父级,如果他与选择器匹配,则停止所有并返回该祖先

        <div id="contents">
            <ul class="list">
                <li class="listi">待办事项清单</li>
                <li class="listi">愿望清单</li>
            </ul>
        </div>
        <script>
            let listi=document.querySelector(".listi");
            console.log(listi.closest(".list"));//listi 的祖先ul
            console.log(listi.closest("#contents"));//div
            console.log(listi.closest("h1"));//null h1不是listi的祖先

 

posted @ 2022-08-12 20:03  炸鸡好吃真好吃  阅读(22)  评论(0编辑  收藏  举报