首页 > 其他分享 >JS DOM详解

JS DOM详解

时间:2025-01-11 17:33:26浏览次数:3  
标签:node DOM 标签 元素 指定 JS 获取 详解 属性

DOM (文档对象模型)

文档对象模型 主要的职责是 处理网页中的标签(元素)

获取标签(元素)对象

  • document.getElementById(“id”) 根据标签的 ID 属性值 获取 指定的元素、 该方法 只能返回 一个标签。
  • document.getElementsByTagName(“tag”) : 根据标签名 获取 所对应的 多个元素组成的 对象(形似数组的对象)。
  • document.getElementsByClassName(“class”) 根据标签的 class 属性值 获取 指定的多个元素 组成的对象(形似数组的对象)。
  • document.getElementsByName(“name”) 根据标签的 name 属性值 获取自指定的多个元素组成的对象(形似数组的对象)
  • document.querySelector(“css”) : 根据 CSS 选择器 选中 满足条件 的 第一个元素
  • document.querySelectorAll(“css”) : 根据 CSS 选择器 选中 满足条件 的所有元素

标签对象基本操作

  • nodeName / tagName : 是一个只读属性、 用来获取 标签名 、返回 标签名的 全大写表示形式 。
  • getAttribute(name) : 根据属性名 获取 对应的属性值, 属性名可以不是标签的原始属性。
  • setAttribute(name, value) : 添加/修改 指定属性 和 值 。
  • removeAttribute(name) : 删除指定的属性 。
  • hasAttribute(name) : 判断标签上是否有 指定的 属性 。
  • innerHTML : 获取 / 修改 标签体中的 超文本内容
  • innerText : 获取 / 修改 标签体中的 纯文本内容

**一个标签的原始属性是可以直接通过 点 调用、例如 id , style, a标签的href, img的标签的 src , 复选框 checked , 下拉列表的 selected 、表单元素的 disabled **

style 属性的操作

  • setProperty(name, value) : 设置 style 样式
  • getPropertyValue(name) : 根据 css 属性名 获取 style 样式中 对应的属性值 。
  • removeProperty(name) : 移除 css 属性名 对应的 style 样式
// 获取 p 标签 
	let ptag = document.querySelector("p") ;
	// 将 p 标签的 文本内容 字体大小 设置为 50px , 背景颜色设为 红色, 字体颜色设置为 白色。
	// ptag.style.fontSize = "50px";
	ptag.style.backgroundColor = "#f00" ; 
	// ptag.style.color = "#fff" ;
	ptag.style.setProperty("font-size", "100px"); 
	//
	let x = ptag.style.getPropertyValue("font-size"); 
	
	ptag.style.removeProperty("font-size")

class 属性的操作

  • className : 获取 / 覆盖 class 属性值
  • classList : 获取 class 属性 对应的 对象,该对象有 三个方法
    • add(x) : 添加指定的 class 样式
    • remove(x) : 删除 指定的 class 样式
    • contains(x) : 判断 class 属性值 是否包含 某一个样式。
    • toggle(x) : 如果不存在则添加样式、否则 移除样式。

dataset 属性的操作

在 HTML 标签中, 如果某个属性 格式为 data-xxx , 那么这个属性 被称为 dataset 属性。

dataset属性 可以通过 getAttribute , setAttribute, removeAttribute 等方法进行操作, 但不专业

<img data-src="https://img0.baidu.com/it/u=2563259522,1302850836&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=355"
		src="https://img2.baidu.com/it/u=2500676160,2111567428&fm=253&fmt=auto&app=138&f=JPEG?w=1200&h=800" alt=""
			onmouseover="changeImg(this)" onm ouseout="changeImg(this)">
		
<script>
	// 1. 获取 p 标签   mouseover (鼠标在 ... 上) , mouseout (鼠标在 ... 外)
	function changeImg(tag) {
		// 获取 data-src 的值 
		let newSrc = tag.dataset.src ;
		let oldSrc = tag.src ;
		// 将 图片的 src 设置 newsrc , 将 data-src 设置为 oldsrc
		tag.src = newSrc ;
		tag.dataset.src = oldSrc ;
	}
	
</script>

标签间的层级关系

  • previousElementSibling : 获取指定元素的 上一个 紧邻的兄弟元素
  • nextElementSibling : 获取指定元素的 下一个 紧邻的兄弟元素
  • parentNode / parentElement : 获取指定元素的 父级 元素。
  • children : 获取指定元素的 所有 子元素。

标签文档操作

  • document.createElement(tagName) : 使用程序 动态创建 一个标签 。此时标签 会存储在 内存中。
  • appendChild(node) : 将指定的节点 node 添加到 目标对象的 所有孩子的 最后。
  • append(…node|string) : 将指定的 节点 node 或者 文本内容 添加到 目标对象的 所有孩子的 最后。支持添加多个
  • prepend(…node|string) : 将指定的 节点 node 或者 文本内容 添加到 目标对象的 所有孩子的 前面。支持添加多个
  • insertBefore(node, child) : 将 指定的 节点 node 插入到 目标对象 指定 的 子元素 的 前面 。
  • before(…node|string) : 将 指定的 节点 node 插入到 目标对象的前面, 形成兄弟关系
  • after(…node|string) : 将 指定的 节点 node 插入到 目标对象的后面, 形成兄弟关系
  • replaceChild(node, child) : 将 child 子元素 替换成 node 节点
  • replaceWith(node) : 将目标对象 替换成 node 节点 。
  • remove() : 删除目标对象。
  • removeChild(child) : 删除 目标对象中的 指定 子节点 。

标签位置信息

  • offsetWdith / offsetHeight : 获取 盒子 的大小 (边框 + 内边距 + 内容大小) 、只读属性

  • offsetLeft / offsetTop : 获取 离他 最近的 具有 定位的 父级 元素的 距离, 如果他所有的父元素均没有定位, 则 相对于 浏览器的偏移。、只读属性


  • clientWidth / clientHeight : 获取 盒子 中 可见 内容的宽 和 高 、只读属性

  • clientLeft / clientTop : 获取 左 / 上 边框 的宽度 。 、只读属性


  • scrollWidth / scrollHeight : 获取 盒子中 内容的 滚动宽 和 滚动高 ,如果 盒子 内容没有溢出 ,那么 值 和 可见宽/高 相同。 、只读属性
  • scrollLeft / scrollTop : 获取 / 设置 滚动条的 位置 。

  • offsetParent : 获取 离他 最近的 具有 定位的 父级 元素、 如果他所有的父元素均没有定位,则返回 body 。
  • getBoundingClientRect() : 获取元素 距离 浏览器的 位置、返回一个 包含 top 和 left 属性的对象 。

标签:node,DOM,标签,元素,指定,JS,获取,详解,属性
From: https://blog.csdn.net/panpanpan233/article/details/145043085

相关文章

  • 详解JS函数
    函数Function定义方式普通函数JS函数最多只能返回一个数据!,如果函数没有使用return返回数据、相当于returnundefined!函数的参数支持必传参数、默认参数和不定项参数(不定项参数使用三个点表示、且类型是数组),和python相比,不支持关键字参数。fu......
  • html css网页制作成品——HTML+CSS+js绝味鸭脖网页设计(5页)附源码
      目录   一、......
  • MySQL主要的SQL_Mode值详解
    ANSI更改语法和行为,使其更符合标准SQL。STRICT_TRANS_TABLESTRADITIONAL使MySQL的行为象“传统”SQL数据库系统。该模式的简单描述是当在列中插入不正确的值时“给出错误而不是警告”等同STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE......
  • node.js基于的大学生心理咨询系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于大学生心理咨询系统的研究,现有研究主要集中在心理咨询的理论、方法以及效果评估等方面,专门针对大学生心理咨询系统设计的研究较少 1。目前虽然已有......
  • node.js基于大数据的在线教育平台课程推荐与学习行为分析研究程序+论文 可用于毕业设
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于在线教育平台的研究,现有研究主要集中在平台的构建、教学模式等方面。在大数据应用于在线教育方面,多以整体的教学效果分析为主,专门针对基于大数据的......
  • node.js基于的路驰汽车美容系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于汽车美容系统的研究,现有研究主要以通用的汽车服务系统为主,专门针对路驰汽车美容服务的研究较少。在国内外,汽车服务相关的研究成果多集中在大型汽车......
  • node.js基于web的社区管理系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于社区管理系统的研究,现有研究主要以传统的管理模式或特定功能的社区管理为主,专门针对将用户、缴费通知、缴费信息、闲置物品、互帮互助等功能整合在......
  • 如何查找两个DOM节点的最近公共父节点
    在前端开发中,如果你需要找到两个DOM节点的最近公共父节点,可以使用JavaScript提供的DOMAPI来实现。以下是一个简单的函数,该函数接受两个DOM节点作为参数,并返回它们的最近公共父节点:functionfindClosestCommonParent(node1,node2){//获取节点1的所有父节点c......
  • node.js毕设高校毕业生实习管理系统论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于高校毕业生实习管理系统的研究,现有研究主要集中在传统管理模式下的个别环节优化,如实习计划制定或实习成绩评定等方面。专门针对构建全面、整合学生......
  • node.js毕设高校毕业生信息采集系统论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于高校毕业生信息采集系统的研究,现有研究主要集中在教育管理系统的宏观层面,专门针对高校毕业生信息采集系统这一特定领域的研究较少。在国内外,已有的......