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

news2024/12/27 4:24:12

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>

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录 Day58 单调栈

今天新学了单调栈&#xff0c;个人感觉蛮简单&#xff0c;只是在栈的基础上加了一条限制条件&#xff08;即递增或递减&#xff09;

苹果Find My产品需求增长迅速,伦茨科技ST17H6x芯片供货充足

苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、Ai…

智能调度架构:优化资源分配,提升效率

随着人工智能技术的发展和应用&#xff0c;智能调度架构作为一种新兴的技术方案&#xff0c;正逐渐成为各行业优化资源分配、提升效率的重要工具。本文将深入探讨智能调度架构的意义、原理以及在不同领域的应用场景。 ### 什么是智能调度架构&#xff1f; 智能调度架构是指基…

算法---动态规划-3(解码方法)

解码方法 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 首先&#xff0c;通过字符串s的大小确定字符串的长度为n&#xff0c;并创建一个长度为n的动态规划数组dp。 处理特殊情况&#xff1a;如果字符串s的长度为1&#xf…

《量子计算:揭开未来科技新篇章》

随着科技的不断发展&#xff0c;量子计算作为一项颠覆性的技术逐渐走进人们的视野&#xff0c;引发了广泛的关注和探讨。本文将围绕量子计算的技术进展、技术原理、行业应用案例、未来趋势预测以及学习路线等方向&#xff0c;深入探讨这一领域的前沿动态和未来发展趋势。 量子…

基于nodejs+vue健身俱乐部网站python-flask-django-php

随着社会的发展&#xff0c;健身俱乐部的管理形势越来越严峻。越来越多的用户利用互联网获得信息&#xff0c;健身信息鱼龙混杂&#xff0c;信息真假难以辨别。为了方便用户更好的获得本健身俱乐部管理信息&#xff0c;因此&#xff0c;设计一种安全高效的健身俱乐部网站极为重…

Uniapp三种常用提示框

具体参数方法可参考: uniapp交互反馈 uni.showToast(OBJECT) //显示消息提示框。 uni.hideToast() //隐藏消息提示框。 //具体使用 uni.showToast({title: 新增成功,duration: 2000 }); uni.showLoading(OBJECT) //显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提…

GitLab更新失败(CentOS)

使用yum更新GitLab&#xff0c;出现如下错误提示&#xff1a; Error: Failed to download metadata for repo gitlab_gitlab-ce: repomd.xml GPG signature verification error: Bad GPG signature 编写如下脚本&#xff1a; for pubring in /var/cache/dnf/gitlab_gitlab-?…

【排序算法】深入解析快速排序(霍尔法三指针法挖坑法优化随机选key中位数法小区间法非递归版本)

文章目录 &#x1f4dd;快速排序&#x1f320;霍尔法&#x1f309;三指针法&#x1f320;挖坑法✏️优化快速排序 &#x1f320;随机选key&#x1f309;三位数取中 &#x1f320;小区间选择走插入&#xff0c;可以减少90%左右的递归&#x1f309; 快速排序改非递归版本&#x1…

图论最短路径以及floyd算法的MATLAB实现

图论是数学的一个分支&#xff0c;起源于18世纪。1736年&#xff0c;数学家欧拉通过解决“哥尼斯堡七桥问题”&#xff0c;将问题抽象成点和线的关系&#xff0c;并通过理论分析得出结论&#xff0c;这个过程标志着图论的产生&#xff0c;欧拉也因此被称为“图论之父”。图论研…

pandas 函数

pandas是基于numpy数组构建的&#xff0c;但二者最大的不同是pandas是专门为处理表格和混杂数据设计的&#xff0c;比较契合统计分析中的表结构&#xff0c;而numpy更适合处理统一的数值数组数据。pandas数组结构有一维Series和二维DataFrame。 Series的字符串表现形式为&#…

Nacos安装指南(包含Windows、Linux、Mac安装指南)

Nacos安装指南 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;https://github.com/alibaba/nacos GitHub的Release下载…

Web APIs 学习知识总结

渲染学成在线案例 html文件: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Com…

数学建模之MATLAB使用

1.数值计算和符号计算的认识 我们都知道MATLAB里面存在着数值计算和符号计算&#xff0c;但是两者之间到底是怎样的呢&#xff1f; 举一个很简单的例子&#xff0c;我们在高等数学里面的微积分学习时经常求不定积分&#xff0c;也就是原函数&#xff0c;这个过程实际上进行的…

搭建hive环境,并解决后启动hive命令报 hive: command not found的问题

一、问题解决 1、问题复现 2、解决问题 查阅资料得知该问题大部分是环境变量配置出了问题&#xff0c;我就输入以下命令进入配置文件检查自己的环境变量配置&#xff1a; [rootnode03 ~]# vi /etc/profile 检查发现自己的hive配置没有问题 &#xff0c;于是我就退出&#xf…

Eclipse新建java类的操作流程

一、在左侧空白区域&#xff0c;点击鼠标右键。 二、点击new&#xff0c;选择Java Project &#xff08;由于这里不知道怎么截图&#xff0c;就用手机拍了一张&#xff0c;希望不要介意&#xff09; 三、 给project文件起个名字&#xff0c;其他都不用管&#xff0c;点击Finis…

HTML(一)---【基础】

零.前言&#xff1a; 本文章对于HTML的基础知识处理的十分细节&#xff0c;适合从头学习的初学者&#xff0c;亦或是想要提升基础的前端工程师。 1.什么是HTML&#xff1f; HTML是&#xff1a;“超文本标签语言”&#xff08;Hyper Text Markup Language&#xff09; HTML不…

MySQL学习笔记|基础(一)|MySQL概述、Mac OS M2芯片Mysql的安装和配置、MySQL数据库数据模型

文章目录 概念安装和配置安装报错 MySQL的启停和状态的查看MySQL数据库数据模型 概念 名称全称简称数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)SQL操纵关系型数据库的编程…

基于nodejs+vue在线政务服务中心python-flask-django-php

最后要对系统进行测试&#xff0c;还要对测试的结果进行总结和分析&#xff0c;为以后系统的维护提供方便&#xff0c;也为以后类似系统的开发提供参考和帮助。这种个性化的网络系统管理更重视相互协调和管理合作,能激发管理者的创造性和主动性,这对在线政务服务中心管理系统来…

第三十一天-Flask-ORM-sqlalchemy

目录 1.什么是ORM 2.flask-sqlalchemy 1安装 2.配置 3.数据库模型设计 ​编辑 4.插入修改删除 5.查询 1.什么是ORM 2.flask-sqlalchemy 1安装 2.配置 3.数据库模型设计 4.插入修改删除 5.查询