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 关闭的二维码erweimalet close_btn = document.querySelector('.close_btn')//2.事件监听close_btn .addEventListener('click',function(){//找他爸,this指的就是close_btnthis.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.绑定多个点击事件给closefor (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)</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>
</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.追加节点 父元素.insertBefore(子元素,放到哪个元素的前面)  ul.insertBefore(li,ul.children[1])</script>
</body>
</html>

 

案例:学成在线案例渲染

需求:按照数据渲染页面 分析:

  • ①:准备好空的ul 结构
  • ②:根据数据的个数,创建一个新的空li
  • ③:li里面添加内容 img 标题等
  • ④:追加给ul
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>学车在线首页</title><link rel="stylesheet" href="style.css"><style></style>
</head><body><!-- 4. box核心内容区域开始 --><div class="box w"><div class="box-hd"><h3>精品推荐</h3><a href="#">查看全部</a></div><div class="box-bd"><ul class="clearfix"><!-- <li><img src="./images/course01.png" alt=""><h4>Think PHP 5.0 博客系统实战项目演练</h4><div class="info"><span>高级</span> • <span> 1125</span>人在学习</div></li> --></ul></div></div><script>let data = [{src: 'images/course01.png',title: 'Think PHP 5.0 博客系统实战项目演练',num: 1125},{src: 'images/course02.png',title: 'Android 网络动态图片加载实战',num: 357},{src: 'images/course03.png',title: 'Angular2 大前端商城实战项目演练',num: 22250},{src: 'images/course04.png',title: 'Android APP 实战项目演练',num: 389},{src: 'images/course05.png',title: 'UGUI 源码深度分析案例',num: 124},{src: 'images/course06.png',title: 'Kami2首页界面切换效果实战演练',num: 432},{src: 'images/course07.png',title: 'UNITY 从入门到精通实战案例',num: 888},{src: 'images/course08.png',title: '我会变,你呢?',num: 590},{src: 'images/course08.png',title: '我会变,你呢?',num: 590}]let ul = document.querySelector('ul')//1.根据数据的个数 ,决定这个小Li的个数for (let i =0;i < data.length;i++){//2.创建小lilet li = document.createElement('li')//console,log(li)//4.先准备好内容,再追加li.innerHTML=`<img src="${data[i].src}" alt=""><h4>${data[i].title}</h4><div class="info"><span>高级</span> • <span> ${data[i].num}</span>人在学习</div>`//3.追加给ul 父元素.appendChild(子元素)ul.appendChild(li)}</script>
</body></html>
  1. 特殊情况下,我们新增节点,按照如下操作:
  •  复制一个原有的节点
  •  把复制的节点放入到指定的元素内部
  1. 克隆节点

<!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></ul><script>let ul = document.querySelector('ul')//括号为空则默认为false 如果是false则不克隆后代节点// let newUL = ul.cloneNode()//如果是true则克隆后代节点let newUL = ul.cloneNode(true)document.body.appendChild(newUL)</script>
</body>
</html>

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

 若为true,则代表克隆时会包含后代节点一起克隆

 若为false,则代表克隆时不包含后代节点

 默认为false

3).删除节点

目标:能够具备根据需求删除节点的能力

  1. 若一个节点在页面中已不需要时,可以删除它
  2. 在 JavaScript 原生DOM操作中,要删除元素必须通过父元素删除

语法:

注:

  • 如不存在父子关系则删除不成功
  • 删除节点和隐藏节点(display:none) 有区别的: 隐藏节点还是存在的,但是删除,则从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>
</head>
<body><button>点击</button><ul><li>我是内容11111</li></ul><script>//需求,点击按钮,删除小lilet btn = document.querySelector('button')let ul = document.querySelector('ul')btn.addEventListener('click',function(){//删除的语法 父元素.removeChild(子元素)ul.removeChild(ul.children[0])})</script>
</body>
</html>

 二.时间对象

目标:掌握时间对象,可以让网页显示时间

 时间对象:用来表示时间的对象

 作用:可以得到当前系统时间

1.实例化  

目标:能够实例化时间对象

在代码中发现了 new 关键字时,一般将这个操作称为实例化,创建一个时间对象并获取时间

  •  获得当前时间
  • 获得指定时间 
<!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><script>//let arr = []// let arr = new Array()// let obj = {}// let obj = new Object()//new 实例化 时间对象//小括号为空可以得到当前时间let date = new Date()console.log(date)//小括号里面写上时间,可以返回指定的时间let last = new Date('2024-3-27 10:09:00')console.log(last)</script>
</body>
</html>
2.时间对象方法

目标:能够使用时间对象中的方法写出常见日期

因为时间对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式

方法作用说明
getFullYear()获得年份获取四位年份
getMonth()获得月份取值为 0 ~ 11
getDate()获取月份中的每一天不同月份取值也不相同
getDay()获取星期取值为0 ~ 6
getHours()获取小时取值为 0 ~ 23
getMinutes()获取分钟取值为 0 ~ 59
getSeconds()获取秒取值为 0 ~ 59
<!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><script>//new 实例化 时间对象//小括号为空可以得到当前的时间let date = new Date()console.log(date.getFullYear()) //年console.log(date.getMonth() + 1) //月console.log(date.getDate())   //日console.log(date.getHours())   //时console.log(date.getMinutes())   //分console.log(date.getSeconds())   //秒console.log(date.getDay() ) //星期几</script>

案例:页面显示时间

需求:将当前时间以:YYYY-MM-DD HH:mm 形式显示在页面

分析: ①:调用时间对象方法进行转换 ②:字符串拼接后,通过 innerText 给 标签

<!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></div><script>let arr =['星期日','星期一','星期二','星期三','星期四','星期五','星期六',]//1.实例化事件对象setInterval(function(){let date = new Date()let year = date.getFullYear()let month = date.getMonth() + 1let date1 = date.getDate()let hour = date.getHours()let min = date.getMinutes()let sec = date.getSeconds()let day = date.getDay()let div = document.querySelector('div')div.innerHTML=`今天是:${year}年${month}月${date1}日 ${hour}:${min}:${sec} ${arr[day]}`},1000)</script>
</body>
</html>
 3.时间戳

目标:能够获得当前时间戳

  • 什么是时间戳

          是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式

  •  三种方式获取时间戳
  1. 使用 getTime() 方法

 

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

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

相关文章

Wireshark 抓包

启动时选择一个有信号的网卡双击打开&#xff0c;或者在 捕获选择里打开选择网卡。 然后输出下面的规则就可以抓到报文了。 最上面的三条是建立连接时的三次握手&#xff0c; 下面是发送数据hello 对应两条数据 最下面的4条是断时的4次挥手

Si24R2F+2.4GHz ISM 频段低功耗无线集成嵌入式发射基带无线

Si24R2F在原有Si24R2F的基础上&#xff1a;优化了射频性能、增加NTC测温、增加自动唤醒间隔、优化了蓝牙性能。在固定资产管理、冷链物流和牛羊畜牧业标签市场更具竞争力。 在原有SI24R2E做白卡/校徽的群体&#xff0c;在新的卡片机应用&#xff0c;更加推荐用SI24R2F&#xff…

[串联] MySQL 存储原理 B+树

InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎&#xff0c;在 MySQL 5.5 之后&#xff0c;InnoDB 是默认的 MySQL 存储引擎。 InnoDB 对每张表在磁盘中的存储以 xxx.ibd 后缀结尾&#xff0c;innoDB 引擎的每张表都会对应这样一个表空间文件&#xff0c;用来存储该表的表结…

AXI-Stream——草稿版

参考自哔站&#xff1a;FPGA IP之AXI4-Lite AXI4-Stream_哔哩哔哩_bilibili 信号 传输层级从小到大 包(----------transfer--transfer--------)------delay--------包(----------transfer--transfer--------) TKEEP和TSTRB共同决定了是哪种数据流

Cocos游戏开发中的动态切割图片

点击上方亿元程序员+关注和★星标 引言 Cocos游戏开发中的动态切割图片 近日,由于笔者发现了另外一个非常有趣的画线切割小游戏,沉迷于夺回秋雅无法自拔,导致断更了一周多。(尊嘟假嘟) 言归正传,游戏体验过之后,非常感兴趣这个游戏中的切割效果是如何实现的呢? 今天…

【剑指offer】顺时针打印矩阵

题目链接 acwing leetcode 题目描述 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 数据范围矩阵中元素数量 [0,400]。 输入&#xff1a; [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出&#xff1a;[1,2,3,4,8,12,11,10,9,5,6,7] 解题 …

【AutoML】一个用于图像、文本、时间序列和表格数据的AutoML

一个用于图像、文本、时间序列和表格数据的AutoML AutoGluon介绍安装AutoGluon快速上手 参考资料 AutoGluon自动化机器学习任务&#xff0c;使您能够在应用程序中轻松实现强大的预测性能。只需几行代码就可以训练和部署有关图像&#xff0c;文本&#xff0c;时间序列和表格数据…

记录在项目中引用本地的npm包

1、先把需要的包下载下来&#xff0c;以Photo Sphere Viewer 为引用的npm包、项目以shpereRepo为例子 git clone https://github.com/mistic100/Photo-Sphere-Viewer2、拉下代码后修改之后执行 ./build.sh build.sh #!/usr/bin/env bashyarn run build targetDir"../sh…

mysql安装及操作

一、Mysql 1.1 MySQL数据库介绍 1.1.1 什么是数据库DB&#xff1f; DB的全称是database&#xff0c;即数据库的意思。数据库实际上就是一个文件集合&#xff0c;是一个存储数据的仓库&#xff0c;数据库是按照特定的格式把数据存储起来&#xff0c;用户可以对存储的数据进行…

【pytest、playwright】allure报告生成视频和图片

目录 1、修改插件pytest_playwright 2、conftest.py配置 3、修改pytest.ini文件 4、运行case 5、注意事项 1、修改插件pytest_playwright pytest_playwright.py内容如下&#xff1a; # Copyright (c) Microsoft Corporation. # # Licensed under the Apache License, Ver…

Maven package classifier测试

package package阶段会生成一个jar文件&#xff0c;包含了main文件夹下编译后的资源。可作为其他项目的依赖引用。 classifier install后&#xff0c;在仓库中存放的artifact的最终文件&#xff0c;即将package最终文件存入仓库&#xff0c;若在打包时需要加以定制&#xff…

双目的Occupancy——Occdepth

文章目录 论文链接&#xff1a;[https://arxiv.org/pdf/2302.13540.pdf](https://arxiv.org/pdf/2302.13540.pdf)、代码链接&#xff1a; [https://github.com/megvii-research/OccDepth](https://github.com/megvii-research/OccDepth) 网络结构&#xff1a;Stereo moudule 通…

政策导向与行业发展

方向一&#xff1a;政策导向与行业发展 政府工作报告中对计算机行业的政策导向主要包括促进信息技术与实体经济深度融合、推动数字化转型升级、加强网络安全和数据保护等。这些政策的出台将直接影响着计算机行业的发展方向和企业的经营策略。 首先&#xff0c;政府将进一步推…

【线段树二分】第十三届蓝桥杯省赛C++ A组/研究生组 Python 研究生组《扫描游戏》(C++)

【题目描述】 有一根围绕原点 O 顺时针旋转的棒 OA&#xff0c;初始时指向正上方&#xff08;Y 轴正向&#xff09;。 在平面中有若干物件&#xff0c;第 i 个物件的坐标为&#xff08;,)&#xff0c;价值为 。 当棒扫到某个物件时&#xff0c;棒的长度会瞬间增长 &#xff…

pycharm使用远程服务器的jupyter环境

1、确保服务器上安装了jupyter,如果没有&#xff0c;执行下面命令安装 pip install jupyter2、启动jupyter notebook服务 jupyter notebook --no-browser --port8888 --ip0.0.0.0 --allow-root表明在服务器的8888 端口上启动 Jupyter Notebook&#xff0c;并允许从任何 IP 地…

基于ACO蚁群优化的UAV最优巡检路线规划算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 蚂蚁移动和信息素更新 4.2 整体优化过程 5.完整程序 1.程序功能描述 基于ACO蚁群优化法的UAV最优巡检路线规划。蚁群优化算法源于对自然界蚂蚁寻找食物路径行为的模拟。在无人机巡检路…

哪些属于“法律、行政法规另有规定,依照其规定进行评估/批准”的情况?

哪些属于“法律、行政法规另有规定&#xff0c;依照其规定进行评估/批准”的情况&#xff1f; 除《网络安全法》《数据安全法》和《个人信息保护法》确立的数据和网络安全整体体系外&#xff0c;企业还应当考虑其他相关法律法规的要求。 例如&#xff1a; ✮如根据《中华人民…

Python(Socket) +Unreal(HTTP)

Python&#xff08;Socket&#xff09; Unreal&#xff08;HTTP&#xff09; python&#xff08;Socket&#xff09;:UE&#xff1a;Post请求并发送本机IP 上班咯&#xff0c;好久没记笔记了。。。 局域网 UE的apk&#xff0c;请求Python的Socket 跑起Socket &#xff0c;UE发 …

科技引领趋势:3D元宇宙展厅在各行业中的应用及其未来展望

随着技术的不断进步&#xff0c;3D元宇宙展厅正逐渐成为各行各业展示产品的新选择。相较于传统的线下展厅&#xff0c;3D元宇宙展厅以其独特的优势&#xff0c;为产品展示和品牌推广提供了全新的可能性。 一、虚拟与现实的完美融合 3D元宇宙展厅是指在虚拟世界中构建的三维展览…

设计模式之抽象工厂模式精讲

概念&#xff1a;为创建一组相关或相互依赖的对象提供一个接口&#xff0c;而且无须指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版本。在存在多个业务品种或分类时&#xff0c;抽象工厂模式是一种更好的解决方式。 抽象工厂模式的UML类图如下&#xff1a; 可以看…