DOM 文档对象模型

一、DOM简介

1、什么是DOM

DOM 文档对象模型简称,是W3C组织推荐的处理可扩展标记语言的标准编程接口

W3C已经定义了一系列的DOM接口,通过这些接口可以改变网页的内容、结构、样式

2、DOM树

DOM把以上内容都看做是对象

二、获取元素

获取页面元素:根据ID获取、根据标签名获取、通过HTML5新增的方法获取、特殊元素获取

1、根据ID获取

使用 getElementByld()方法可以获取带有ID的元素对象

2、根据标签名获取

使用getElementsByTagName()方法可以返回带有指定标签名的对象的集合

document.getElementsByTagName(‘标签名’);

注意:1、因为得到的是一个对象的集合,所以我们想要操作里面的元素就需要遍历

得到元素对象是动态的

        2、父元素必须是单个对象(必须指明是哪一个元素对象)。获取的时候不包括父元素自己

3、通过HTML5新增的方法获取

1、document.getElementsByClassName(‘类名’); 根据类名返回元素对象集合

2、document.querySelector(‘选择器’);  根据指定选择器返回第一个元素对象

3、document.querySelectorAll(‘选择器’); 根据指定选择器返回

4、获取特殊元素(body,HTML)

1、获取body元素

document.body  返回body元素对象

2、获取HTML元素

document.documentElement   返回HTML元素对象

三、事件基础

1、事件由三部分组成:事件源 事件类型 事件处理程序

2、执行事件的步骤

1、获取事件源

2、注册事件(绑定事件)

3、添加事件处理程序(采取函数赋值形式)

3、常见的鼠标事件

4、分析事件三要素

下拉菜单三要素

关闭广告三要素

四、操作元素

1、改变元素内容

        2、innerText 和 innerHTML的区别

1、innerText 不识别HTML标签,非标准,去除空格和换行

2、innerHTML 识别HTML标签,W3C标准,保留空格和换行

这两个属性是可读写的,可以获取元素里面的内容

3、常用元素的属性操作

        4、分时问候并显示不同图片案例

5、表单元素的属性操作

利用DOM可以操作如下表单元素的属性:

type 、value、checked、selected、disabled

        6、仿京东显示密码案例

7、样式属性操作

我们可通过JS修改元素的大小、颜色、位置

1、element.style   行内样式操作

2、element.className 类名样式操作

注意:JS里面样式采用驼峰命名法

          JS 修改 style 样式操作,产生的是行内样式,css权重比较高。

如果样式修改过多,可以采取操作类名方式更改元素样式

class 因为是个保留字,因此使用className  来操作元素类名属性

className 会直接更改元素的类名,会覆盖原先的类名

        8、显示隐藏文本框内容

        9、仿新浪注册页面

操作元素总结

4.5 排他思想

        百度换肤效果

        表格隔行变色

        全选和取消全选

4.6 自定义属性的操作
        1、获取属性值

element .属性  获取属性值        获取内置属性值(元素本身自带的属性)

element .getAttribute('属性')        主要获得自定义的属性

        2、设置属性值

element .属性 = ‘值’        设置内置属性值

element .setAttribute('属性',‘值’);        主要设置自定义的属性

        3、移除属性

element .removeAttribute('属性')

tab 栏切换(重点案例)

在for循环绑定点击事件 上面加一句      lis[i].setAttribute('index', i);

给五个小li 设置索引号

4.7 H5自定义属性

自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。

自定义属性获取是通过getAttribute(‘属性’)获取

h5新增的获取自定义属性的方法 他只能获取data-开头的

dataset 是一个集合存放了所有以data开头的自定义属性

五、节点操作

1、为什么学节点操作

获取元素通常使用两种方式:

2、节点概述

网页中所有内容都是节点(标签、属性、文本、注释等),在DOM中,节点使用node表示

HTML  DOM树中的所有节点均可通过JavaScript 进行访问,所有HTML元素(节点)均可被修改,也可创建或删除

一般,节点至少拥有 nodeType(节点类型),nodeName(节点名称)和nodeValue(节点值)这三个基本属性

我们在实际开发中,节点操作主要操作的是元素节点

3、节点层级

利用DOM树可以把节点划分为不同的层级关系,常见的是父子兄层级关系

        1、父级节点

node.parentNode

parentNode 属性可返回某节点的父节点,注意是最近的一个父节点

如果指定的节点没有父节点则返回null

        2、子节点

1、parentNode.childNodes(标准)

2、parentNode.children(非标准)

parentNode.children 是一个只读属性,返回所有的子元素节点。他只返回子元素节点,其余节点不返回

3、parentNode.firstChild

firstChild  返回第一个子节点,找不到则返回null。同样,也是包含所有的节点。

4、parentNode.lastChild

5、parentNode.firstElementChild

返回第一个子元素节点,找不到则返回null

6、parentNode.lastElementChild

下拉菜单案例

        3、兄弟节点

1、node.nextSibling 返回当前元素的下一个兄弟节点,找不到则返回null。

2、node.previousSibling  返回当前元素上一个兄弟节点

3、node.nextElementSibling   返回下一个兄弟元素节点

4、node.previousElementSibling

4、创建节点

document.creatElement('tagName')

document.creatElement(' ') 方法创建由 tagName 指定的 HTML 元素。因为这些元素原先不存在,是根据我们的需求动态生成的,所以我们也称为 动态创建元素节点

5、添加节点

1、node.appendChild(child)     node父级  child 子级  后面追加元素

node.appendChild( )  方法将一个节点添加到指定父节点的子节点列表末端。类似于css 里面的after 伪元素

2、node.inserBefore(child,指定元素)   

指定一个元素前面追加元素

我们想要页面添加一个新的元素:1、创建元素  2、添加元素

简单版发布留言案例

6、删除节点

node.removeChild(child)

node.removeChild( ) 方法从dom中删除一个子节点,返回删除的节点

删除留言案例

<a href='javascript:;'>删除</a>

7、复制节点

node.cloneNode( )

node.cloneNode( ) 方法返回调用该方法的节点的一个副本。也称为克隆节点、拷贝节点

注意:

如果括号参数为空或者为false ,则是浅拷贝,即只克隆复制节点本身,不克隆里面的子节点

括号里面为true 深拷贝 复制标签复制里面的内容

动态生成表格

5、8三种动态创建元素区别

document.write()

element.innerHTML

document.createElement()

1、document.write 是直接将内容写入页面的内容流,但是文档流执行完毕,则会导致页面全部重绘

2、innerHTML 是将内容写入某个dom节点,不会导致页面全部重绘

3、innerHTML 创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍复杂

4、createElement()创建多个元素效率稍降低一点,但结构更清晰

DOM重点核心

关于dom操作,我们主要针对于元素的操作。主要有创建(document.write\innerHTML\creatElement)\增(appendchild、insertBefore)、删(removeChild)、改、查属性操作事件操作

改:

查:

属性操作:

事件操作:

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

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

相关文章

day001 ~如何修改主机名

命令行方式设置主机名 # 这个很重要&#xff01;用命令改方便些 hostnamectl set-hostname ocloud-252 #查询&#xff0c;exit或logout重新登录后发现主机名换掉 hostname nmtui方式修改 nmtui 在工作中,如果机器很多,最好修改主机名做好标识不至于弄混,方便管理.

TensorFlow运行bug汇总

1、ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1 解决方案 pip install urllib31.26.15 -i https://pypi.tuna.tsinghua.edu.cn/simple 升级或者降级 (TF2.1) C:\Users\Administrator>pip install urllib31.26.15 -i https://pypi.tuna.tsinghua.edu.cn/sim…

LeetCode—用队列实现栈

一.题目 二.思路 1.后入先出的实现&#xff1a; 创建两个队列来实现栈&#xff08;后入先出&#xff09;&#xff1a; 两个队列&#xff0c;保持一个存数据&#xff0c;另一个为空&#xff0c;入数据&#xff08;push&#xff09;要入不为空的队列&#xff0c;&#xff08;p…

DDS块集是如何工作的?

DDS块集使你能够在Simulink中创建DDS应用程序。如果你有一个在Simulink中建模的应用程序&#xff0c;希望能够使用DDS&#xff0c;则可以使用DDS块集轻松连接到DDS中间件平台。 DDS块集将DDS概念引入Simulink环境&#xff0c;在Simulink应用程序中对这些概念进行建模&#xff0…

java实体类中,不对应数据库的实体类字段

TableField(exist false) 是 MyBatis Plus 中的注解&#xff0c;用于标记实体类中的字段是否映射到数据库表中的字段。在这个注解中&#xff0c;exist 属性默认为 true&#xff0c;表示该字段在数据库表中存在。而当设置为 false 时&#xff0c;表示该字段不会映射到数据库表中…

STM32串口通信入门

文章目录 一、串口协议和RS-232标准&#xff0c;以及RS232电平与TTL电平的区别1.串口通信协议2.RS-232标准3.RS232电平与TTL电平的区别4.USB/TTL转232“模块&#xff08;CH340芯片为例&#xff09; 二、补充实验&#xff08;一&#xff09;几个常见的库函数、结构体1.时钟配置函…

【机器学习数据可视化-04】Pyecharts数据可视化宝典

一、引言 在大数据和信息爆炸的时代&#xff0c;数据可视化成为了信息传递和展示的关键手段。通过直观的图表和图形&#xff0c;我们能够更好地理解数据&#xff0c;挖掘其背后的信息。Pyecharts&#xff0c;作为一款基于Python的数据可视化库&#xff0c;凭借其丰富的图表类型…

代码随想录刷题笔记

目录 四数相加2&#xff08;Leetcode454&#xff09; 四数相加2&#xff08;Leetcode454&#xff09; public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int cnt 0;Map<Integer,Integer> map new HashMap();/** 这一步用来存 数组1和数…

多模态EDA论文小记

论文地址 该论文主要改进点是&#xff1a;通过动态化局部搜索中每个集群大小&#xff0c;高斯和柯西分布共同产生个体。总的来说改进点不多&#xff0c;当然也可能是笔者还没发现。 局部搜索 划分集群 划分集群有两个策略分别是&#xff1a; 随机生成一个点作为中心点&…

MySQL表死锁查询语句

步骤1&#xff1a;查询表死锁的sql语句&#xff1a; SELECT * FROM information_schema.PROCESSLIST where length(info) >0 ; 或 SELECT * FROM information_schema.INNODB_TRX; 步骤2&#xff1a;删除 kill "对应的线程id"

Dockerfile 基本结构

Dockerfile 是一个文本文件&#xff0c;用于自动化 Docker 镜像的构建过程。这里是一个简单的 Dockerfile 编写步骤&#xff0c;以及一个基本的例子&#xff1a; Dockerfile 基本结构 FROM: 指定基础镜像。RUN: 执行命令。COPY / ADD: 复制文件或目录到镜像中。CMD: 设置容器…

【JVM】Class文件的格式

目录 概述 Class文件的格式 概述 Class文件是JVM的输入&#xff0c;Java虚拟机规范中定义了Class文件的结构。Class文件是JVM实现平台无关、技术无关的基础。 1:Class文件是一组以8字节为单位的字节流&#xff0c;各个数据项目按顺序紧凑排列 2:对于占用空间大于8字节的数据…

16 华三数据中心最流行的技术 M-LAG

STP和MTP&#xff08;第二十二课&#xff09;-CSDN博客 VRRP技术和浮动路由(第二十六课)_vrrp 浮动路由-CSDN博客 VRRP DHCP ACL NAT 网络核心路由技术综述 (第十课)-CSDN博客 04 交换机的IRF的配置-CSDN博客 1 M-LAG AI介绍 M-LAG&#xff08;Multi-Chassis Link Aggrega…

其他的 框架安全:Apache Solr 远程代码漏洞.(CVE-2019-0193)

什么是 Apache Solr Apache Solr是一个开源的搜索服务&#xff0c;便用Java语言开发&#xff0c;主要基于 HTTP 和ApacheLucene 实现的。Sor是一个高性能&#xff0c;采用Java5开发&#xff0c;基于Lucene的全文搜索服务器。 目录&#xff1a; 什么是 Apache Solr 生成的漏…

python设计模式-策略模式

from abc import abstractmethod,ABCclass BaseProcess(ABC):abstractmethoddef process_file(self,filepath):passclass ExcelProcess(BaseProcess):def process_file(self,filepath):print("处理excel 方法")class CsvProcess(BaseProcess):def process_file(self,…

java final关键字

在Java中,final 是一个关键字,用于表示一个最终变量、方法或类。它可以用于不同的上下文中,具有不同的含义: 1. 最终变量: 用 final 修饰的变量表示一个常量,一旦被赋值后就不能再改变。如果是基本数据类型,一旦赋值后就不能再更改其值。如果是引用类型,一旦引用被初…

基于yolov5+streamlit目标检测演示系统设计

YOLOv5与Streamlit&#xff1a;智能目标检测可视化展示介绍 随着人工智能技术的飞速发展&#xff0c;目标检测技术已成为推动智能化社会进步的关键技术之一。在众多目标检测算法中&#xff0c;YOLOv5以其卓越的性能和实时性&#xff0c;成为了业界的佼佼者。与此同时&#xff…

vben框架是什么

Vben是一个基于Vue3.0、Vite、Ant-Design-Vue、TypeScript的后台解决方案&#xff0c;目标是为开发中大型项目提供开箱即用的解决方案。它包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。项目会使用前端较新的技术栈&#xff0c;可以作为项目的…

Spring Boot 集成 sa-token 实践教程

Spring Boot 集成 sa-token 实践教程 sa-token 是一个轻量级且功能强大的权限认证框架&#xff0c;它基于Java语言&#xff0c;专为Java开发者设计&#xff0c;以简化权限管理的复杂性。在Spring Boot项目中集成sa-token&#xff0c;可以快速实现会话管理、权限控制等功能。本文…

程序员必读书单(CSDN专享)

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 今天是一篇分享资源的汇总&#xff0c;近半年来我总计分享了 202 本&#xff08;将近 10G &#xff09;的计算机领域著作…