Web APIs知识点讲解(阶段三)

DOM- 节点操作

一.节点操作

1.DOM节点

目标:能说出DOM节点的类型

  1. DOM节点

             DOM树里每一个内容都称之为节点

  1. 节点类型
  • 元素节点

           所有的标签 比如 body、 div

           html 是根节点

  • 属性节点

           所有的属性 比如 href

  • 文本节点

           所有的文本

document树:

总结:

1. 什么是DOM 节点?

 DOM树里每一个内容都称之为节点

2. DOM节点的分类?

 元素节点 比如 div标签

 属性节点 比如 class属性

 文本节点 比如标签里面的文字

3. 我们重点记住那个节点?

 元素节点

 可以更好的让我们理清标签元素之间的关系

 

2.查找节点

目标:能够具备根据节点关系查找目标节点的能力

  1. 关闭二维码案例:

          点击关闭按钮, 关闭的是二维码的盒子, 还要获取erweima盒子

  1. 思考:
  • 关闭按钮 和 erweima 是什么关系呢?
  • 父子关系
  • 所以,我们完全可以这样做:
  • 点击关闭按钮, 直接关闭它的爸爸,就无需获取erweima元素了
  1. 节点关系:
  • 父节点
  • 子节点
  • 兄弟节点
  1. 父节点查找:
  • parentNode 属性

  • 返回最近一级的父节点 找不到返回为null

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="father">
        <div class="son">儿子</div>
    </div>

    <script>
        let son = document.querySelector('.son')
        //  找爸爸
        //console.log(son.parentNode)
         //此项运行时会返回Null,被隐藏了
        //son.parentNode.style.display = 'none'
    </script>
</body>
</html>

 案例:关闭二维码案例


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .erweima {
            position: relative;
            width: 160px;
            height: 160px;
            margin: 100px auto;
            border: 1px solid #ccc;
        }

        .erweima i {
            position: absolute;
            left: -13px;
            top: 0;
            width: 10px;
            height: 10px;
            border: 1px solid #ccc;
            font-size: 12px;
            line-height: 10px;
            color: #ccc;
            font-style: normal;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <div class="erweima">
        <img src="./images/code.png" alt="">
        <i class="close_btn">x</i>
    </div>
    <script>
    //1.获取元素 事件源i 关闭的二维码erweima
    let close_btn = document.querySelector('.close_btn')
   
    //2.事件监听
    close_btn .addEventListener('click',function(){
        //找他爸,this指的就是close_btn
        this.parentNode.style.display = 'none'
    })

    </script>
</body>

</html>

案例:关闭二维码案例

需求:多个二维码,点击谁,谁关闭 分析:

①:需要给多个按钮绑定点击事件

②:关闭的是当前的父节点

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>
  <style>
    .erweima {
      width: 149px;
      height: 152px;
      border: 1px solid #000;
      background: url(./images/456.png) no-repeat;
      position: relative;
    }

    .close {
      position: absolute;
      right: -52px;
      top: -1px;
      width: 50px;
      height: 50px;
      background: url(./images/bgs.png) no-repeat -159px -102px;
      cursor: pointer;
      border: 1px solid #000;
    }
  </style>
</head>

<body>
  <div class="erweima">
    <span class="close"></span>
  </div>
  <div class="erweima">
    <span class="close"></span>
  </div>
  <div class="erweima">
    <span class="close"></span>
  </div>
  <div class="erweima">
    <span class="close"></span>
  </div>
  <div class="erweima">
    <span class="close"></span>
  </div>

  <script>
    // 获取元素
    let close_btn = document.querySelectorAll('.close')
    //2.绑定多个点击事件给close
    for (let i = 0;i < close_btn.length;i++){
      close_btn[i].addEventListener('click', function(){
        //3.关闭当前的那个二维码  点击谁,就关闭谁的爸爸
        this.parentNode.style.display = 'none'
      })
    }
  </script>
</body>

</html>

子节点查找:

  • childNodes

          获得所有子节点、包括文本节点(空格、换行)、注释节点等

  • children (重点)

            仅获得所有元素节点

           返回的还是一个伪数组

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button>点击</button>
    <ul>
        <li>我是孩纸</li>
        <li>我是孩纸</li>
        <li>我是孩纸</li>
        <li>我是孩纸</li>
        <li>我是孩纸</li>
        <li>我是孩纸</li>
    </ul>
    <script>
        let btn = document.querySelector('button')
        let ul = document.querySelector('ul')
        btn.addEventListener('click',function(){
            // console.log(ul.children)
            for (let i = 0;i < ul.children.length;i++){
                ul.children[i].style.color = 'red'
            }
        })
        ul.children[1].style.color = 'green'
            //console.log(ul.childNodes)
    </script>
</body>
</html>

兄弟关系查找:

1. 下一个兄弟节点:nextElementSibling 属性

2. 上一个兄弟节点:previousElementSibling 属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button>点击</button>
    <ul>
        <li>第1个</li>
        <li>第2个</li>
        <li>第3个</li>
        <li>第4个</li>
    </ul>
    <script>
        let btn = document.querySelector('button')
        let two = document.querySelector('.two')
        btn.addEventListener('click',function(){
            two.nextElementSibling.style.color = 'red'
            two.previousElementSibling.style.color = 'red'
        })
    </script>
</body>
</html>

1. 查找父节点用那个属性?

 parentNode

2. 查找所有子节点用那个属性?

 children

3. 查找兄弟节点用那个属性?

 nextElementSibling

 previousElementSibling

3.增加节点

目标:能够具备根据需求新增节点的能力 

1).创建节点

 即创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点

 创建元素节点方法:

2).追加节点

 要想在界面看到,还得插入到某个父元素中

 插入到父元素的最后一个子元素:

 插入到父元素中某个子元素的前面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>我是大毛</li>
        <li>我是二毛</li>
    </ul>
    <script>
        //二毛 ul.children[1]
        //1.创建新的标签节点
        // let div = document.createElement('div')
        //div.className = 'current'
        let ul = document.querySelector('ul')
        let li = document.createElement('li')

        li.innerHTML = '我是小li'
        //2.追加节点 父元素.appendChild(子元素)  后面追加
        // ul.appendChild(li)
        //3.追加节点 父元素.appendChild(子元素)  后面追加
        ul.insertBefore(li,ul.children[0])
    </script>
</body>
</html>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490748.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

你敢信?苹果iPhone 16将搭载百度AI文心一言

【行业焦点】苹果公司&#xff0c;这位全球消费电子舞台的常青树&#xff0c;近期传出一则震撼业界的消息&#xff1a;其将在新一代iPhone 16系列中国版产品中&#xff0c;深度融合百度的尖端生成式AI技术。这一重大决策不仅揭示了苹果对中国市场的深度耕耘与本地化创新战略&am…

Java Web-Maven

Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具 Maven的作用 1.依赖管理:方便快捷的管理项目依赖资源(jar包)&#xff0c;避免版本冲突问题 我们有的项目需要大量的jar包&#xff0c;采用手动导包的方式非常繁琐&#xff0c;并且版本升级也…

elasticsearch _cat/indices docs.count is different than <index>/_count

今天遇到一个问题&#xff0c;kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…

外贸企业如何访问外网?

在当今全球化的浪潮下&#xff0c;企业对于稳定、高效的网络连接需求日益迫切。无论是在境内还是境外&#xff0c;企业都需要依托可靠的网络基础设施&#xff0c;以确保业务的顺畅进行。在这样的背景下&#xff0c;我们提供的专业网络运营服务成为了众多企业的首选。 1. 网络建…

neo4j使用详解(三、cypher插入语法——最全参考)

1.插入语法 create, merge, set, delete, remove, create unique, load csv(import) 除插入语法外另外的语法详情请博主其他文章&#xff1a; 查询语法 其他语法 1.1.create语法 创建单个节点: create(n) # (ID:n) 创建带标签的节点: create (n:Person) # (ID:n, label:Perso…

垃圾回收:垃圾回收器

目录 垃圾回收器 评估GC的性能指标 7种典型的垃圾回收器 Serial回收器&#xff1a;串行回收 ParNew回收器&#xff1a;并行回收 Parallel回收器&#xff1a;吞吐量优先 CMS回收器&#xff1a;低延迟 G1回收器&#xff1a;区域化分代式 G1回收过程1-年轻代GC G1回收过程…

人、机中的幻觉和直觉

对于人类而言&#xff0c;幻觉和直觉是两种不同的心理现象。幻觉是一种错误的感知或体验&#xff0c;而直觉是一种在没有明显依据的情况下产生的直观认知。这两种概念在心理学和认知科学中具有不同的意义和研究对象。 人类幻觉是指个体在感知或体验上出现的错误&#xff0c;即看…

攻防世界-baby_web

题目信息 相关知识 使用bp进行抓包 解题过程 题目界面如下所示: 试图找index界面&#xff1a; 发现又跳转到http://61.147.171.105:51201/1.php页面&#xff0c;因此说明61.147.171.105:51201/index.php是存在的&#xff08;因为笔者试了&#xff0c;不存在的页面会直接报…

SHAP和LIME:Python机器学习模型解释

SHAP和LIME&#xff1a;Python机器学习模型解释 为了更好地展示&#xff0c;示例代码参见和鲸社区&#xff0c;一键运行 简介 机器学习模型在各个领域得到广泛应用&#xff0c;但其黑盒性质往往使人难以理解其决策过程&#xff0c;降低了模型的可信度和可靠性。为了解决这一…

ROM-IP

1.原理 通过添加数据文件&#xff0c;使ROM看起来不是易失性存储器&#xff0c; 产生256个数据&#xff0c;每个数据的位宽是8 如果前面为x&#xff0c;后面就是x256-1 2.单端口ROM配置 FPGA内部没有非易失性存储器。调用的ROM和RAM都是用RAM来生成的 3.双端口ROM配置 使用第一…

React系列之虚拟DOM、FIBER和DIFF算法

文章目录 虚拟 DOM 和 DIFF 算法虚拟DOM虚拟DOM对象虚拟DOM的优势预防XSS DIFF算法旧的DIFF算法Fiber树渲染过程算法过程key 的作用 虚拟 DOM 和 DIFF 算法 虚拟DOM React使用虚拟DOM来更新真正的DOM。 DOM表示“文档对象模型”&#xff0c;浏览器遵循HTML指令来构造文档对象…

Temu api接口 获取商品详情 数据采集

iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Temu电商数据采集API&#xff0c;供用户按需调用。 接口使用详情请参考Temu接口文档 接口列表 1. 获取商品详情 参数类型是否必填默认值示例值描述apikeystring是idr_***从控制台里复制apikeycountrystrin…

一文看懂什么是OpenHarmony流转架构

随着全场景多设备的生活方式不断深入&#xff0c;用户拥有的设备越来越多&#xff0c;不同设备都能在适合的场景下提供良好的体验&#xff0c;例如手表可以提供及时的信息查看能力&#xff0c;电视可以带来沉浸的观影体验。但是&#xff0c;每个设备也有使用场景的局限&#xf…

四川思维跳动商务信息咨询有限公司抖音电商的领航者

在数字化浪潮席卷全球的今天&#xff0c;电商行业正以其独特的魅力改变着传统的商业模式。作为这一变革的先锋力量&#xff0c;四川思维跳动商务信息咨询有限公司&#xff08;以下简称“思维跳动”&#xff09;凭借其深厚的行业经验和创新思维&#xff0c;专注于抖音电商服务&a…

如何保障MySQL和Redis的数据一致性?

在满足实时性的条件下&#xff0c;不存在两者完全保存一致的方案&#xff0c;只有最终一致性方案。 根据网上的众多解决方案&#xff0c;总结出 6 种&#xff0c;直接看目录&#xff1a; 不好的方案 1. 先写 MySQL&#xff0c;再写 Redis 图解说明&#xff1a; 这是一副时序图…

C++ STL - vector使用详解

目录 0.引言 1.构造函数 2. 赋值函数 3. vector 容量与大小 4. vector 插入和删除 5. vector 元素访问与更改 6. vector 互换 9. vector 预留空间 0.引言 这篇博客将详细介绍 vector&#xff0c;由于总体上与上一篇介绍的 string 类似&#xff0c;在此处注意展示其…

【Python】Data Science with Python 数据科学(1)环境搭建

一、操作系统 使用运行在Windows11主机上的Ubuntu 22.04虚拟机&#xff0c;虚拟化平台为Oracle VM VirtualBox。 二、PyCharm安装 有关PyCharm的安装和快捷方式创建&#xff0c;可分别参考我的博客 Ubuntu安装PyCharm、Ubuntu创建桌面快捷方式 &#xff0c;以及Ubuntu创建桌…

Vue2(十一):全局事件总线、消息订阅与发布pubsub、TodoList的编辑功能、$nextTick、过渡与动画

一、全局事件总线 1、思路解析 一种组件间通信的方式&#xff0c;适用于任意组件间通信。通俗理解就是一个定义在所有组件之外的公共x&#xff0c;这个x可以有vm或vc上的同款$on、$off、$emit&#xff0c;也可以让所有组件都访问到。 第一个问题&#xff1a;那怎样添加这个x才…

GPU-CPU-ARM-X86-RISC-CUDA

CPU更适合处理复杂逻辑运算和单线程任务&#xff0c;而GPU则更适合处理大规模并行计算任务。 CPU&#xff08;中央处理器&#xff09;通常具有较少的核心数量&#xff08;一般在2到16个之间&#xff09;&#xff0c;但每个核心的性能较强&#xff0c;擅长执行复杂的运算和逻辑…

SpringCloud Alibaba实战和源码(8)OpenFeign使用

1、 使用Feign实现远程HTTP调用 1.1、常见HTTP客户端 HttpClient HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持 Http 协 议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 J…