Dom树相关

article/2025/6/22 17:10:31

对节点的增删改查

查看元素节点
document代表整个文档
document.getElementById() //元素id 在Ie8以下的浏览器,不区分id大小写,而且也返回匹配name属性的元素

  • getElementsByTagName() // 标签名
  • getElementByName(); //,需注意,只有部分标签name可生效(表单,表单元素,img,iframe)
  • getElementsByClassName() // 类名 -> ie8和ie8以下的ie版本中没有,可以多个class一起
  • querySelector() // css选择器 在ie7和ie7以下的版本中没有
  • querySelectorAll() // css选择器 在ie7和ie7以下的版本中没有

document.createElement();
document.createTextNode();
document.createComment();
document.createDocumentFragment();

PARENTNODE.appendChild();
PARENTNODE.insertBefore(a, b):

parent.removeChild();

替换

parent.replaceChild(new, origin);

节点的类型

元素节点 —— 1
属性节点 —— 2
文本节点 —— 3
注释节点 —— 8
document —— 9
DocumentFragment —— 11
获取节点类型 nodeType

节点的四个属性

nodeName
元素的标签名,以大写形式表示,只读
nodeValue
Text节点或Comment节点的文本内容,可读写
nodeType
该节点的类型,只读
attributes
Element 节点的属性集合
节点的一个方法 Node.hasChildNodes();

Element节点的一些属性

innerHTML
innerText(火狐不兼容) / textContent(老版本IE不好使)
Element节点的一些方法
ele.setAttribute()
ele.getAttribute();

在这里插入图片描述
document HTMLDocument Document的关系

 看如下操作:

在这里插入图片描述
见document的原型链上有HTMLDocument.prototype和Document.prototype

  1. document表示文档对象,而它的构造函数是HTMLDocument
  2. HTMLDocument.prototype.proto = Document.prototype
  3. 因此,document和Document之间的关系就是:
    document继承自HTMLDocument.prototype,而HTMLDocument.prototype又继承自Document.prototype
  4. head,body等标签直接继承自HTMLHeadElement.prototype,HTMLBodyElement.prototype等
  5. HTMLDocument.prototype定义了一些常用的属性,body,head分别指代body,head标签
    document.body = ;
    document.head = ;
    Document.prototype上定义了documentElement属性,指代文档的根元素。
  6. getElementById方法定义在Document.prototype上,即Element节点上不能使用。
  7. getElementsByName方法定义在HTMLDocument.prototype上,即非html中的document以外不能使用(xml document,Element)
  8. getElementsByTagName方法定义在Document.prototype 和 Element.prototype上
  9. HTMLDocument.prototype定义了一些常用的属性,body,head,分别指代HTML文档中的标签。
  10. Document.prototype上定义了documentElement属性,指代文档的根元素,在HTML文档中,他总是指代元素
  11. getElementsByClassName、querySelectorAll、querySelector在Document,Element类中均有定义

关于宽高

查看视口的尺寸

window.innerWidth/innerHeight
IE8及IE8以下不兼容
document.documentElement.clientWidth/clientHeight
标准模式下,任意浏览器都兼容
document.body.clientWidth/clientHeight
适用于怪异模式下的浏览器

查看元素的几何尺寸

domEle.getBoundingClientRect();
兼容性很好
该方法返回一个对象,对象里面有left,top,right,bottom等属性。left和top代表该元素左上角的X和Y坐标,right和bottom代表元素右下角的X和Y坐标
height和width属性老版本IE并未实现
返回的结果并不是“实时的”

让滚动条滚动

window上有三个方法
scroll(),scrollTo(),scrollBy();
三个方法功能类似,用法都是将x,y坐标传入。即实现让滚动轮滚动到当前位置。
区别:scrollBy()会在之前的数据基础之上做累加。
eg:利用scrollBy() 快速阅读的功能

查看元素的尺寸

dom.offsetWidth,dom.offsetHeight

查看元素的位置

dom.offsetLeft, dom.offsetTop
对于无定位父级的元素,返回相对文档的坐标。对于有定位父级的元素,返回相对于最近的有定位的父级的坐标。
dom.offsetParent
返回最近的有定位的父级,如无,返回body, body.offsetParent 返回null
eg:求元素相对于文档的坐标

js时间线

1、创建Document对象,开始解析web页面。解析HTML元素和他们的文本内容后添加Element对象和Text节点到文档中。这个阶段document.readyState = ‘loading’。

2、遇到link外部css,创建线程加载,并继续解析文档。

3、遇到script外部js,并且没有设置async、defer,浏览器加载,并阻塞,等待js加载完成并执行该脚本,然后继续解析文档。

4、遇到script外部js,并且设置有async、defer,浏览器创建线程加载,并继续解析文档。
对于async属性的脚本,脚本加载完成后立即执行。(异步禁止使用document.write())

5、遇到img等,先正常解析dom结构,然后浏览器异步加载src,并继续解析文档。

6、当文档解析完成,document.readyState = ‘interactive’。

7、文档解析完成后,所有设置有defer的脚本会按照顺序执行。(注意与async的不同,但同样禁止使用document.write());

8、document对象触发DOMContentLoaded事件,这也标志着程序执行从同步脚本执行阶段,转化为事件驱动阶段。

9、当所有async的脚本加载完成并执行后、img等加载完成后,document.readyState = ‘complete’,window对象触发load事件。

10、从此,以异步响应方式处理用户输入、网络事件等。


http://www.hkcw.cn/article/TNjLKLisPI.shtml

相关文章

继承(全)

⾯向对象思想中提出了继承的概念,专⻔⽤来进⾏共性抽取,实现代码复⽤。 1.什么是继承 如:狗和猫都是动物,那么我们就可以将共性的内容进⾏抽取,然后采⽤继承的思想来达到共⽤。 // Animal.javapublic class Animal{S…

车主因赖账被代驾举报酒驾 5元停车费引发风波

近日,浙江宁波一名兰博基尼车主酒后请代驾将车开到小区,随后自己开车进车库。因不愿支付代驾小哥垫付的5元停车费,被对方举报酒驾。交警检测发现,该车主血液中的酒精含量达59mg/100ml,达到酒驾标准。其驾驶证被扣12分,暂扣6个月,并被处以2000元以下罚款。事发当晚11时30…

非洲再现致命狮子咬人事件 商人不幸遇难

在纳米比亚西北部偏远地区的一处豪华度假村内,一名男子被狮子咬死。警方透露,这起悲剧发生在清晨,当时受害者正与其他游客在这家帐篷度假村露营,他在走出帐篷去上厕所时遭到袭击。其他露营者设法吓跑了狮子,但男子已经死亡。当地媒体确认,受害者是知名商人贝恩德・克贝尔…

Linux基础指令

一、Linux背景 1、发展史 要说Linux,还得从UNIX说起。 (1)UNIX发展的历史 • 1968年,⼀些来⾃通⽤电器公司、⻉尔实验室和⿇省理⼯学院的研究⼈员开发了⼀个名叫 Multics的特殊操作系统。Multics在多任务⽂件管理和⽤⼾连接中…

新兴手机市场集体“失速” 增长预期下调

新兴手机市场集体“失速” 增长预期下调!2025年已经过去了五个月,全球智能手机市场的预期持续下调。年初对市场看涨的预测如今已大幅降低。即便去年开始在终端落地的AI技术,也暂未对消费市场产生明显刺激。IDC最新研究报告显示,由于高不确定性、关税波动以及许多地区的通货…

有创意!太原70岁老太太用玉树嫁接长寿花走红

在太原的一个老小区里,住着一位70岁的老太太,姓王,邻里街坊都喊她“王奶奶”。这段时间她在小区里可算是火了一把,原因就是她那几盆“嫁接玉树”,一看就让人忍不住多瞧几眼。仔细一看,才发现不只是玉树——它的枝干上,竟然开着一串串色彩艳丽的长寿花,红的、粉的、橙的…

Posix API

Posix API与网络协议栈 Posix API与网络协议栈socketbindlistenacceptconnectrecv和send 整个网络之间的通信贯穿起来都离不开网络协议栈这个东西,网络协议栈主要负责主要负责网络间数据的通信,自顶向下可分为五层:应用层,传输层&…

Flask+LayUI开发手记(七):头像的上传及突破static目录限制

看了看,上篇开发手记是去年8月份写的,到现在差2个月整一年了。停更这么长时间,第一个原因是中间帮朋友忙一个活,那个技术架构是用springboot的,虽然前端也用layUI,但和Flask-python完全不搭界,所…

第一篇:揭示模型上下文协议(MCP):AI的通用连接器

模型上下文协议(MCP)是 Anthropic 于 2024 年末推出的一项开放标准,旨在彻底改变人工智能(AI)模型与外部数据源及工具的连接方式。它被誉为 AI 应用的“USB-C 接口”,其核心目的是标准化 AI 助理与数据所在…

(九)学生写作画像可视化

在上次报告中提到的无法正确识别登录状态的问题已经解决,现在调用后端api时可以正确load_user并得到登录状态。 登录状态问题解决后,本次主要实现的是学生写作画像的数据可视化,学生可以登陆后查看自己之前的作文列表与历史各维度得分&#x…

国家能源集团称从未设拓展中心 警惕假冒机构

国家能源集团称从未设拓展中心 警惕假冒机构。国家能源集团近期发现有不法分子假冒其名义在全国多地设立所谓“拓展中心”,涉嫌从事违法活动,并通过抖音、微信视频号等网络平台进行虚假宣传。对此,国家能源集团发布严正声明,强调从未在全国任何地区设立任何“拓展中心”或“…

官方证实!美国停止对华芯片设计软件(EDA)销售 打压“中国芯”再升级

面对中国在先进芯片领域取得的重大突破,美国特朗普政府将目光转向了设计芯片的软件,试图借此打压“中国芯”。英国《金融时报》5月28日报道称,美国政府已采取措施限制向中国出售此类产品。美国彭博社也报道了类似消息,称美国商务部工业与安全局已致函部分头部美国电子设计自…

乌称对俄军机发动大规模袭击 摧毁41架战略轰炸机

俄乌第二轮谈判定于6月2日举行。谈判前夕,乌克兰声称对俄罗斯实施了一次特别行动,摧毁了41架俄战略轰炸机。然而,俄媒认为乌方宣称的战果并不符合实际。乌克兰国家安全局在社交媒体上表示,6月1日晚对俄罗斯发起了一次代号为“蛛网”的特种作战行动,袭击了俄军的战略轰炸机…

离婚,失业,失亲……她40岁后的人生那么难?美丽无关年龄

离婚,失业,失亲……她40岁后的人生那么难?美丽无关年龄!美丽与年龄无关,即便他人不再认同你。都说年龄是女人最大的秘密,尤其是生儿育女之后,“衰老”这个词便成了女人内心最大的恐惧和痛处。如今,三八妇女节甚至被迫更名为“三八女神节”,以消除称呼上的忌讳。然而,…

巴西登革热疑似及确诊病例超143万 疫情严峻引发关注

巴西卫生部发布消息称,截至6月2日,今年该国登革热疑似及确诊病例已达到1430300例,死亡病例为1075例,另有818例疑似死亡病例正在调查中。圣保罗州、米纳斯吉拉斯州和巴拉那州是目前巴西登革热疫情最为严重的地区。责任编辑:zhangxiaohua

四川古蔺警方通报7人殴打未成年人 误会引发暴力事件

四川古蔺县警方于6月2日通报了一起涉及未成年人的暴力事件。据报道,两名未成年人在骑车时发出笑声,被15岁的陈某甲误以为是在嘲笑自己。随后,陈某甲与其他六人一起在地下停车场对这两名未成年人进行了殴打。目前,七名涉案人员均已被警方抓获,其中两人因涉嫌犯罪被刑事拘留…

多位男星减肥成功 压力已给到沈腾 贾冰瘦身引热议

5月31日,贾冰的妻子发布了一段视频,并配文“从此我家多了个瘦子”。在两人合影中,贾冰明显瘦了很多。评论区里大家纷纷询问他如何瘦下来的,甚至有人表示瘦得认不出来了。贾冰的妻子回复说,主要是通过少吃(一天只吃一顿)和运动来减肥的。贾冰在评论区幽默地回应说:“一次…

任务25:绘制全局时间线(TimeLine)

任务描述 知识点: DjangoECharts时间线图重 点: ECharts时间线图内 容: 参考ECharts官网示例创建timeline.js,绘制时间线图引入js文件,并调用绘图函数时间线图形配置项微调任务指导 1、参考ECharts官网示例:(https://echarts.apache.org/examples/zh/index.html),…

2025年渗透测试面试题总结-青藤云[校招]红队攻防岗(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 青藤云[校招]红队攻防岗 1. 数据库提权 2. Redis计划任务提权 3. 绕过杀软执行数据库命令 4. SQL Server…

HCIP:MPLS LDP的原理和配置

目录 一、MPLS LDP的原理 1.回顾MPLS 2.MPLS LDP的基本概念 3.LDP的工作过程主要分为两部分 ​4.LDP会话: 5.LDP的对等体 6.LDP的消息 7.LDP工作原理 8.标签的发布和管理 二、MPLD LDP的实验配置 1.配置IP地址和OSPF 2.配置MPLS LDP 3.查看各个设备的…