【Javascript】Javascript高级程序设计:dom 随手笔记

news2025/1/17 1:08:25

文章目录

  • 一、dom 元素类型
    • 1.1 Node
    • 1.2 document
    • 1.3 Element
    • 1.4 Text
  • 二、dom 操作
    • 2.1 querySelector、querySelectorAll
    • 2.2 元素遍历
    • 2.3 classList 操作
    • 2.4 焦点管理
    • 2.5 HTMLDocument 变化
    • 2.6 自定义数据属性
    • 2.7 插入标记
      • 2.7.1 innerHTML
      • 2.7.2 outerHTML
    • 2.8 scrollIntoView
  • 三、扩展属性
    • 3.1 children 属性
    • 3.2 innerText
  • 四、dom 操作元素属性(重)
    • 4.1 访问元素样式
    • 4.2 元素大小
      • 4.2.1 偏移量(offset)
    • 4.2.2 客户区(client)
    • 4.2.3 滚动区(scroll)


一、dom 元素类型

1.1 Node

1.js 所有的节点类型都继承自 Node 类型

2.Node.nodeName 返回节点标签名

3.每个 node 都有 node.childNodes 属性,返回 NodeList 对象。NodeList 并不是 Array 的实例,而是基于 DOM 的动态查询结果,添加、删除节点能动态地反映到 NodeList 中(无论nodeList是否在修改html之前改变,都会反映)。NodeList 支持索引访问,有 length 属性

4.parentNode、firstChild、lastChild、previousSibling、nextSibling、hasChildNodes()

5.添加节点:appendChild,添加到节点尾,并返回新增节点
father.insertBefore(newNode, x),在 father 下,x 之前插入节点。如果 x 为 null,相当于 appendChild

6.替换节点:father.replaceChild(newNode, oldNode)

7.删除节点:father.removeChild(node)

8.克隆节点:node.cloneNode(d)。d 为 true,深拷贝,复制包括所有子孙节点。为 false,仅复制本身


1.2 document

1.document.URL,获取页面 url

2.document.domain,页面域名

3.查找元素
document.querySelector
document.getElementByID
document.getElementByTagName
document.getElementByClassName
复数形式:
document.querySelectorAll
document.getElementsByID
document.getElementsByTagName
document.getElementsByClassName
特殊:
document.getElementsByName 通过 name 属性查找,只能查找多个

4.创建元素
document.createElement(html_tag)


1.3 Element

getAttribute
setAttribute
removeAttribute


1.4 Text

parentNode 是 Element
不太重要,操作可由上述类型代替
作用:
动态添加 js 语句到 html 中执行

// 动态加载js文件
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
document.body.appendChild(script);
<!-- 动态添加 js 代码 -->
<script type="text/javascript">
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.text = 'function sayHi() {alert("hi");}';
	document.body.appendChild(script);
</script>

还可以动态地创建 css 的 style 标签


二、dom 操作

2.1 querySelector、querySelectorAll

接收 css 选择器,关于 css 选择器语法,不多赘述,自行搜索


2.2 元素遍历

element.childElementCount 。子元素个数(不包含文本节点和注释)
element.firstElementChild 。箱一个子元素
element.lastElementChild
element.previousElementSibling 。前一个同辈元素
element.nextElementSibling

2.3 classList 操作

用于操作类名
add
contains
remove
toggle

例:

div.classList.remove("user");
div.classList.add("current");
div.classList.contains("bd");
div.classList.toggle("current");	// 切换 current 类

2.4 焦点管理

document.activeElement 获取当前焦点元素
document.hasFocus() 当前页面是否获得焦点
例:

var btn = document.querySelector("button");
btn.focus();
console.log(document.activeElement === btn);	// true

2.5 HTMLDocument 变化

readyState 属性

该属性有两个值:loading、complete

2.6 自定义数据属性

前缀为 date- 的为自定义属性
定义后,可以通过 dataset 属性来访问自定义属性的值
例:

<div data-myname="zhuyi"></div>
var div = document.querySelector("div");
var name = div.dateset.myname;	// name = zhuyi

2.7 插入标记

2.7.1 innerHTML

可读可写属性,返回内部 html,string 类型

2.7.2 outerHTML

可读可写,包含当前元素的 html,string 类型
写模式下,会替换掉当前元素


2.8 scrollIntoView

可以在所有 html 元素上调用,参数为 true,滚动元素到与顶部平齐,为 false,滚动元素到页面中部


三、扩展属性

3.1 children 属性

children 与之前说过的 childNodes 区别是,children 会包含注释。但这个区别只在 IE9之前有,IE9版本浏览器后,只返回元素节点,两者并无区别

3.2 innerText

返回元素的文档树中的文本,包括子文档树的文本,可读可写

写模式下,会删除内部的文档树节点,替换为文本


四、dom 操作元素属性(重)

4.1 访问元素样式

1.通过 js 访问元素样式时,若 css 属性名为短划线命名法,则 js 中要替换为小驼峰命名法

<!-- 例 -->
<div background-image="aaa.jpg"></div>
<script type="text/javascript">
	var div = document.querySelector("div");
	div.backgroundImage = "xxx.jpg";	// 换为小驼峰
</script>

多数情况下,换小驼峰可访问 css 属性。但 float 属性例外,float 是 js 的保留字,不能作属性命,而改为div.cssFloat
Firefox、Safari、Opera、Chrome 都支持这个属性,而万恶的 IE 浏览器支持的是 div.styleFloat

4.2 元素大小

4.2.1 偏移量(offset)

在这里插入图片描述

概念
偏移量:包括元素在屏幕上所占用的所有可见空间,包括高度、宽度、内边距、滚动条、边框大小,不包括外边距
有四个属性:

  1. offsetHeight:元素在垂直方向占用的空间大小。包括高(可见高度)、水平滚动条、上下边框
  2. offsetWidth: 宽(可见)、竖直滚动条、左右边框
  3. offsetLeft: 元素左边框至包含元素(有定位)的左边框之间的像素距离
  4. offsetTop:~同上

offsetHeight 和 offsetWidth,无非是 width、height、padding、border,再加滚动条,即 css 盒子模型把 margin 替换为 滚动条

offsetTop、offsetLeft:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
    <style>
        * {
            margin: 0;
        }
        div {
            width: 200px;
            height: 200px;
        }

        div.outer {
            padding: 100px;
            width: 600px;
            height: 600px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div id="first" style="background-color: red;"></div>
    <div class="outer">
        <div id="last" style="background-color: blue;"></div>
    </div>

    <script>
        var div = document.querySelector("#last");
        console.log(div.offsetTop);
    </script>
</body>
</html>

在这里插入图片描述
当我们给 div.outer 添加定位后
在这里插入图片描述


4.2.2 客户区(client)

包含两个属性

  • clientHeight
  • clientWidth

包括:宽高、padding、border

所以:
client + 滚动条 = offset 偏移量
client + margin = box 盒子模型
offset 偏移量 - 滚动条 + margin = 盒子模型


4.2.3 滚动区(scroll)

包含四个属性

  • scrollHeight。没有滚动条时,元素内容总高度
  • scrollWidth
  • scrollLeft。有滚动条时,被隐藏的左边
  • scrollTop

在这里插入图片描述

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

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

相关文章

【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读

【推荐系统】推荐算法&#xff1a;冷启动-召回-粗排-精排-重排 解读 文章目录 【推荐系统】推荐算法&#xff1a;冷启动-召回-粗排-精排-重排 解读1. 介绍2. 冷启动2.1 用户冷启动2.1.1 利用用户注册信息冷启动2.1.2 好物推荐冷启动2.1.3 问题启发式冷启动2.1.4 社交冷启动2.1.…

Qt程序执行编译输出内容解释

以这个为例&#xff1a; D:\SoftwareInstall\Qt6\Tools\QtCreator\bin\jom\jom.exe -f Makefile.Debug cd AuthorizeTools\ && ( if not exist Makefile D:\SoftwareInstall\Qt6\5.15.2\msvc2019_64\bin\qmake.exe -o Makefile E:\Coding\project\DigitalCamera\digita…

渗透测试流程是什么?这篇给你讲清楚!

在学习渗透测试之初&#xff0c;有必要先系统了解一下它的流程&#xff0c;静下心来阅读一下&#xff0c;树立一个全局观&#xff0c;一步一步去建设并完善自己的专业领域&#xff0c;最终实现从懵逼到牛逼的华丽转变。渗透测试是通过模拟恶意黑客的攻击方法&#xff0c;同时也…

ceph高可用、手动安装

操作系统&#xff1a;centos8 三台服务器&#xff1a; 192.168.6.22&#xff1a;mon,mgr,mds,osd 192.168.6.23&#xff1a;mon,mgr,mds,osd 192.168.6.24&#xff1a;mon,mgr,mds,osd 正式环境osd和mon不应该在一个节点&#xff0c;建议osd单独服务器安装。 ceph版本&am…

python scrapy 报错 DEBUG: Ignoring response 403

DEBUG: Ignoring response <403 https://digital.ucas.com/coursedisplay/results/courses?studyYear2024>: HTTP status code is not handled or not allowed原因&#xff1a;被屏蔽了&#xff0c;在settings.py 里面配一下USER_AGENT&#xff08;随便写一个就行&#…

历年上午真题笔记(2014年)

解析:A 网络设计的三层模型 : 接入层:Layer 2 Switching,最终用户被许可接入网络的点,用户通过接入层可以访问网络设备。 汇聚层:Layer2/3 Switching,访问层设备的汇聚点,负责汇接配线单元,利用二、三层技术实现工作组分段及网络故障的隔离,以免对核心层网络设备造…

A股风格因子看板 (2023.10 第13期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第13期&#xff0c;指数组合数据截止日2023-09-30&#xff0c;要点如下 近1年A股风格因子检验统…

第3天:基础入门-抓包amp;封包amp;协议amp;APPamp;小程序amp;PC应用amp;WEB应用

第3天&#xff1a;基础入门-抓包&封包&协议&APP&小程序&PC应用&WEB应用 1、抓包技术应用意义//有些应用或者目标是看不到的&#xff0c;这时候就要进行抓包 2、抓包技术应用对象 //app,小程序 3、抓包技术应用协议 //http&#xff0c;socket 4、抓包技…

MaxEnt(最大熵)模型使用方法-系统教程

MaxEnt模型是通过物种已知分布数据和相关环境变量来推算物种的生态需求&#xff0c;然后将运算结果投射至不同的空间和时间中以预测物种的潜在分布区。由于对样本需求量要求小、预测能力优等特点&#xff0c;已被广泛应用于物种潜在分布区预测、外来入侵物种风险评估及气候变化…

11月17号|Move生态Meetup相约浪漫土耳其

Move是基于Rust编程语言&#xff0c;由Mysten Labs联合创始人兼CTO Sam Blackshear在Meta的Libra项目中开发而来&#xff0c;旨在为开发者提供比现有区块链语言更通用的开发语言。Sam的目标是创建Web3的JavaScript&#xff0c;即一种跨平台语言&#xff0c;使开发人员能够在多个…

希尔顿集团飞猪旗舰店携海外酒店开启双11全球旅行囤货潮

【中国&#xff0c;上海&#xff0c;10月31日】继十一黄金周出游需求释放&#xff0c;旅游市场回归超预期&#xff0c;希尔顿集团洞悉旅行者们对于探索目的地的热情不减&#xff0c;于今日在希尔顿集团飞猪旗舰店正式上线2023年双11系列活动&#xff0c;并首次布局海外酒店&…

【Linux】进程状态与进程优先级及其相关概念

文章目录 进程基本概念描述进程-PCBtask_struct-PCB的一种task_ struct内容分类 组织进程查看进程通过系统调用获取进程标示符通过系统调用创建进程-fork初识fork原理fork做了什么?fork是如何看待进程的fork如何理解两个返回值的功能 进程状态进程状态&#xff1a;1.普遍的操作…

原来低代码开发如此简单

目录 一、技术介绍 二、设计原理 三、界面展示 四、功能框架 我们在低代码领域探索了多年&#xff0c;从2014 开始研发低代码前端渲染&#xff0c;从 2018 年开始研发后端低代码数据模型&#xff0c;发布了JNPF快速开发平台。 JNPF低代码是一款新奇、实用、高效的企业级软件开发…

Jmeter(二十):jmeter对图片验证码的处理(超详细)

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 同时&#xff0c;我也准…

微波上下变频装置系列-80704A/80705A/80719/80720 上下变频装置

微波上下变频装置系 80704A/80705A/80719/80720 上下变频装置系列产品采用1U高度19英寸标准机箱结构&#xff0c;内置低相噪合成本振源&#xff0c;基于模块化可程控的微波上下变频通道&#xff0c;具有结构紧凑、操作简便、技术指标高和环境适应性强等特点。上下变频装置系列的…

2023 年 Github 万圣节彩蛋

目录 2023 万圣节彩蛋2022 万圣节彩蛋2021 万圣节彩蛋2020 万圣节彩蛋 &#x1f383;&#x1f383;&#x1f383; 记录每年 Github 万圣节彩蛋&#xff0c;也记录有来项目成长历程。 Github 主页&#xff1a; https://github.com/haoxianrui 2023 万圣节彩蛋 2022 万圣节彩蛋 …

百元开放式耳机推荐哪款比较好、百元开放式耳机推荐

开放式耳机由于其不入耳的设计&#xff0c;佩戴时不会压迫耳腔&#xff0c;因此长时间佩戴时没有压力。加之因为开放式耳机的发声原理是通过空气传导的原理&#xff0c;音质会比较自然舒适&#xff0c;更加饱满&#xff0c;氛围感更强&#xff0c;会更符合我们正常人的听觉&…

飞致云开源社区月度动态报告(2023年10月)

自2023年6月起&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…

一文带你了解Java最基本的数据类型和变量

&#x1f388;个人主页&#xff1a;.满船清梦压星河_-CSDN博客 &#x1f302;c/java领域新星创作者 &#x1f389;欢迎&#x1f44d;点赞✍评论❤️收藏 &#x1f61b;&#x1f61b;&#x1f61b;希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&…

C++学习初探---C++面向对象 --- 类 对象

文章目录 前言C 类 & 对象类成员函数C 类访问修饰符公有&#xff08;public&#xff09;成员私有&#xff08;private&#xff09;成员受保护&#xff08;protected&#xff09;成员继承中的特点 类的构造函数和析构函数C友元函数C内联函数C this指针C指向类的指针C 类的静…