API-节点操作

学习目标:

  • 掌握节点操作

学习内容:

  1. DOM节点
  2. 查找节点
  3. 增加节点
  4. 删除节点

DOM节点:

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

在这里插入图片描述

  • 节点类型
元素节点所有的标签比如body、div;html是根节点
属性节点所有的属性,比如href
文本节点所有的文本
其他-
  • 小结
  1. 什么是DOM节点?

    DOM树里每一个内容都称之为节点。
    
  2. DOM节点的分类?

    元素节点 :比如div标签。
    属性节点:比如class属性。
    文本节点:比如标签里面的文字。
    
  3. 我们重点记住哪个节点?

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

查找节点:

  • 节点关系:针对的找亲戚返回的都是对象。
  • 父节点查找:

parentNode属性

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

子元素.parentNode
<title>查找节点-父节点</title>
</head>

<body>
  <div class="yeye">
    <div class="dad">
      <div class="baby">X</div>
    </div>
  </div>
  <script>
    const baby = document.querySelector('.baby')
    console.log(baby) // 返回dom对象
    console.log(baby.parentNode) // 返回dom对象   爸爸 
    console.log(baby.parentNode.parentNode) //返回dom对象  爷爷

  </script>

</body>
  • 练习:
 <title>练习-关闭二维码案例</title>
  <style>
    .box {
      position: relative;
      width: 1000px;
      height: 200px;
      background-color: pink;
      margin: 100px auto;
      text-align: center;
      font-size: 50px;
      line-height: 200px;
      font-weight: 700;
    }

    .box1 {
      position: absolute;
      right: 20px;
      top: 10px;
      width: 20px;
      height: 20px;
      background-color: skyblue;
      text-align: center;
      line-height: 20px;
      font-size: 16px;
      cursor: pointer;
    }
  </style>
</head>

<body>
  <div class="box">
    我是广告
    <div class="box1">X</div>
  </div>
  <div class="box">
    我是广告
    <div class="box1">X</div>
  </div>
  <div class="box">
    我是广告
    <div class="box1">X</div>
  </div>
  <script>
    // //1.获取事件源
    // const box1 = document.querySelector('.box1')
    // //2.事件侦听
    // box1.addEventListener('click', function () {
    //   this.parentNode.style.display = 'none'
    // })

    //1.获取三个关闭按钮
    const closeBtn = document.querySelectorAll('.box1')
    for (let i = 0; i < closeBtn.length; i++) {
      closeBtn[i].addEventListener('click', function () {
        //关闭我的爸爸,所以只关闭当前的父元素
        this.parentNode.style.display = 'none'
      })
    }

  </script>

</body>
  • 子节点查找:

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

children属性(重点)

  1. 仅获得所有元素节点。
  2. 返回的还是一个伪数组。
父元素.children
<title>查找节点-子节点</title>
</head>

<body>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
  <script>
     const ul = document.querySelector('ul') //ul
     console.log(ul.children)  //得到伪数组  选择的是 亲儿子
  </script>

</body>
  • 兄弟关系查找:
下一个兄弟节点nextElementSibling属性
上一个兄弟节点previousElementSibling 属性
<title>查找节点-子节点</title>
</head>

<body>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
  <script>
    // const ul = document.querySelector('ul') //ul
    // console.log(ul.children)  //得到伪数组  选择的是 亲儿子
    const li2 = document.querySelector('ul li:nth-child(2)')
    console.log(li2.previousElementSibling) //上一个兄弟
    console.log(li2.nextElementSibling) //下一个兄弟
  </script>

</body>
  • 小结
  1. 查找父节点用哪个属性?

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

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

    nextElementSibling
    previousElementSibling
    

增加节点:

很多情况下,我们需要在页面中增加元素。

比如,点击发布按钮,可以新增一条信息。

一般情况下,我们新增节点,按照如下操作:

创建一个新的节点。
把创建的新的节点放入到指定的元素内部。
  • 创建节点

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

创建元素节点方法:

//创造一个新的元素节点
document.createElement('标签名')
<title>增加节点</title>
</head>

<body>
  <ul>
    <li>我是老大</li>
  </ul>
  <script>
    //1.创建节点
     const div = document.createElement('div')
     console.log(div)
  </script>

</body>
  • 追加节点

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

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

//插入到这个父元素的最后
父元素.appendChild(要插入的元素)

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

//插入到某个子元素的前面
父元素.insertBefore(插入的元素,放到哪个元素的前面)
<title>增加节点</title>
</head>

<body>
  <ul>
    <li>我是老大</li>
  </ul>
  <script>
    //1.创建节点
    // const div = document.createElement('div')
    // console.log(div)
    //2.追加节点  作为最后一个子元素
    // document.body.appendChild(div)
    const ul = document.querySelector('ul')
    const li = document.createElement('li')
    li.innerHTML = '我是li'
    // ul.appendChild(li)
    // ul.children
    //3.追加节点
    // insertBefore(插入的元素,放到哪个元素的前面)
    ul.insertBefore(li, ul.children[0])

  </script>

</body>

  • 克隆节点

特殊情况下,我们新增节点,按照以下操作:

复制一个原有的节点。
把复制的节点放入到指定的元素内部。
//克隆一个已有的元素节点
元素.cloneNode(布尔值)

cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值。

若为true代表克隆时会包含后代节点一起克隆
若为false代表克隆时不包含后代节点
默认为false-
<title>克隆节点</title>
</head>

<body>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
  <script>
    const ul = document.querySelector('ul')
    //1.克隆节点  元素.cloneNode(true)
    const li1 = ul.children[0].cloneNode(true)
    // console.log(li1)
    //2.追加
    ul.appendChild(li1)
  </script>

</body>

删除节点:

若一个节点在页面中已不需要,可以删除它。

在JavaScript原生DOM操作中,要删除元素必须通过父元素删除

父元素.removeChild(要删除的元素)

注意:

  1. 如不存在父子关系则删除不成功。

  2. 删除节点和隐藏节点(display: none)有区别的:

    隐藏节点还是存在的,但是删除,则从html中删除节点。
    
<title>删除节点</title>
  <style>
    .box {
      display: none;
    }
  </style>
</head>

<body>
  <div class="box">123</div>
  <ul>
    <li>没用了</li>
  </ul>
  <script>
    const ul = document.querySelector('ul')
    //删除节点 父元素.removeChild(子元素)
    ul.removeChild(ul.children[0])
  </script>

</body>

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

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

相关文章

前端git约定式规范化提交-commitizen

当使用commitizen进行代码提交时&#xff0c;commitizen会提示你在提交代码时填写所必填的提交字段信息内容。 1、全局安装commitizen npm install -g commitizen4.2.4 2、安装并配置 cz-customizeable 插件 2.1 使用 npm 下载 cz-customizeable npm i cz-customizeable6.…

TS_类型

目录 1.类型注解 2.类型检查 3.类型推断 4.类型断言 ①尖括号&#xff08;<>&#xff09;语法 ②as语法 5.数据类型 ①boolean ②number ③string ④undefined 和 null ⑤数组和元组 ⑥枚举 ⑦any 和void ⑧symbol ⑨Function ⑩Object 和 object 6.高…

精品UI知识付费系统源码网站EyouCMS模版源码

这是一款知识付费平台模板&#xff0c;后台可上传本地视频&#xff0c;批量上传视频连接&#xff0c; 视频后台可设计权限观看&#xff0c;免费试看时间时长&#xff0c;会员等级观看&#xff0c;付费观看等功能&#xff0c; 也带软件app权限下载&#xff0c;帮助知识教育和软件…

通讯录管理系统——删除联系人——检测联系人是否存在

功能描述&#xff1a;按照姓名删除指定联系人 删除联系人实现步骤&#xff1a; 1.封装检测联系人是否存在 2.封装删除联系人函数 3.测试删除联系人功能 一、封装检测联系人是否存在 设计思路&#xff1a; 删除联系人前&#xff0c;我们需要先判断用户输入的联系人是否存…

饮料添加剂光照试验太阳光模拟器试验箱

饮料添加剂光照试验是一种用来评估饮料在光照条件下稳定性的实验方法。这个过程通常包括以下几个步骤&#xff1a; 样品准备&#xff1a; 首先&#xff0c;将饮料密封在市售包装或近似市售包装中&#xff0c;确保包装的完整性和密封性。 光照条件设置&#xff1a; 将封装好的…

【云原生】深入理解Pod的使用进行管理

深入理解Pod 文章目录 深入理解Pod一、介绍Pod1.1、什么是Pod1.2、Pod的特点1.3、Pod的用途1.4、Pod网络1.5、Pod存储1.6、Pod的工作方式 二、创建Pod2.1、命令行创建Pod2.2、资源清单创建Pod2.2.1、镜像拉取策略2.2.2、Pod重启策略2.2.3、部署资源2.2.4、删除资源 三、静态Pod…

自养号测评助力:亚马逊、沃尔玛电商高效测评补单技巧,轻松实现销量与补单双赢

要在竞争激烈的市场中通过测评补单的方式提升产品权重和销售&#xff0c;构建一个稳定且高效的测评补单系统至关重要。通过精心培养一批高质量的买家账号&#xff0c;并深入了解真实买家的行为数据&#xff0c;结合对风控数据的精准把控&#xff0c;我们能够自主推动推广进程&a…

25岁庆生|人大金仓带你这样过!

25年&#xff0c;是一个重要的时间节点 一个世纪的四分之一 百年基业的第一站&#xff0c;我们已经走过 人大金仓即将25岁了&#xff0c;感谢有你 趣味运动会 今日上午 二十五周年司庆终极活动正式开启 北京、成都、天津、青岛、西安 五地同步举行趣味运动会 活力四射的集体健走…

datax入门(data-web的简单使用)——02

datax入门&#xff08;data-web的简单使用&#xff09;——02 1. 前言1.1 关于data-web官网1.1.1 源码下载1.1.2 datax-Web部署手册1.1.2.1 Linux环境部署手册1.1.2.2 本地开发环境部署手册 1.2 关于datax入门 2. 下载之后打包、启动、登录2.1 我的本地环境2.2 修改配置2.3 初始…

记一次小程序渗透

这次的小程序渗透刚好每一个漏洞都相当经典所以记录一下。 目录 前言 漏洞详情 未授权访问漏洞/ 敏感信息泄露&#xff08;高危&#xff09; 水平越权&#xff08;高危&#xff09; 会话重用&#xff08;高危&#xff09; 硬编码加密密钥泄露&#xff08;中危&#xff0…

【Python报错】已解决 ModuleNotFoundError: No module named ‘transformers‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 ModuleNotFoundError: No module named ‘transformers’ 是一个常见的错误&#xff0c;它表明你的Python环境中没有安装t…

普及GIS知识,推动产业发展

915 GIS节&#xff1a;普及GIS知识&#xff0c;推动产业发展 自2008年起&#xff0c;每年的9月15日被定为“GIS节”&#xff0c;这一特殊的节日由超图首次发起倡议&#xff0c;旨在打造一个普及和传播GIS&#xff08;地理信息系统&#xff09;知识的平台&#xff0c;促进大众对…

一次可输入多张图像,还能多轮对话!最新开源数据集,让AI聊天更接近现实

大模型对话能更接近现实了&#xff01; 不仅可以最多输入20张图像&#xff0c;还能支持多达27轮对话。可处理文本图像tokens最多18k。 这就是最新开源的超长多图多轮对话理解数据集MMDU&#xff08;Multi-Turn Multi-Image Dialog Understanding&#xff09;。 大型视觉语言模…

Python数据分析案例47——笔记本电脑价格影响因素分析

案例背景 博主对电脑的价格和配置一直略有研究&#xff0c;正好最近也有笔记本电脑相关的数据&#xff0c;想着来做点分析吧&#xff0c;写成一个案例。基本上描述性统计&#xff0c;画图&#xff0c;分组聚合&#xff0c;机器学习&#xff0c;交叉验证&#xff0c;搜索超参数…

【Vision Transformers-VIT】: 计算机视觉中的Transformer探索

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

嵌入式Linux系统编程 — 4.5 strcmp、strchr 等函数实现字符串比较与查找

目录 1 字符串比较 1.1 strcmp() 函数 1.2 strncmp() 函数 1.3 示例程序 2 字符串查找 2.1 strchr() 函数 2.2 strrchr() 函数 2.3 strstr() 函数 2.4 strpbrk() 函数 2.5 示例程序 1 字符串比较 strcmp() 和 strncmp() 函数是C语言标准库中用于比较两个字符串的函…

STM32 HAL库 外部中断 实现按键控制LED亮灭

目录 1、为什么使用GPIO外部中断控制LED亮灭&#xff1f; 2、NVIC嵌套向量中断控制器 3、EXTI外部中断 4、项目的硬件排线 5、STM32CUBE_MX配置 6、HAL库代码 7、实际效果 1、为什么使用GPIO外部中断控制LED亮灭&#xff1f; 实现LED亮灭控制有很多方式&#xff0c;其中…

等保2.0安全计算环境解读

等保2.0&#xff0c;即网络安全等级保护2.0制度&#xff0c;是中国为了适应信息技术的快速发展和安全威胁的新变化而推出的网络安全保护标准。相较于等保1.0&#xff0c;等保2.0更加强调主动防御、动态防御和全面审计&#xff0c;旨在实现对各类信息系统的全面保护。 安全计算环…

自适应响应式瓷砖地板建材网站源码pbootcms模板

模板介绍 一款全面的自适应响应式瓷砖地板建材网站源码pbootcms模板。该模板兼容所有浏览器&#xff0c;整站源码下载&#xff0c;可以帮您节约建站成本&#xff0c;以高质量高效率完成网站的设计创建。 模板截图 源码下载 自适应响应式瓷砖地板建材网站源码pbootcms模板

IDEA错误:command line is too long 命令行过长

今天运行程序时遇到了一个错误&#xff0c;提示如下&#xff1a; 那么话不多说&#xff0c;如何解决呢&#xff1f; 首先点击右上角的编辑配置 点击修改选项 点击缩短命令行 选择JAR清单 好了&#xff0c;问题解决