前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >新手如何在 ES6 如何操作HTML DOM元素?

新手如何在 ES6 如何操作HTML DOM元素?

作者头像
用户1418987
发布于 2023-10-21 07:56:00
发布于 2023-10-21 07:56:00
40700
代码可运行
举报
文章被收录于专栏:codercoder
运行总次数:0
代码可运行

ES6 HTML DOM

DOM代表文档对象**模型。HTML 页面在浏览器中呈现。浏览器将从网络服务器下载的页面中包含的所有元素组装到其内存中。一旦完成,浏览器就会在浏览器窗口中显示这些对象,一旦完成,浏览器就无法再识别单个 HTML 元素。支持 JavaScript 的浏览器能够在 HTML 页面在浏览器中呈现之后识别该页面中的各个对象,因为支持 JavaScript 的浏览器可以识别并使用 DOM。因此,允许随意控制对象的功能。

DOM 的优点:

  • 有助于创建交互式网页,因为它允许浏览器识别单个 HTML 对象,即使它们在浏览器窗口中呈现后也是如此。
  • 允许随意控制对象的功能
  • 帮助更新或修改数据
结构
  • **导航器:**浏览器。例如:Netscape Navigator,Internet Explorer,Opera,Mosaic等。
  • 窗口: 浏览器的窗口。
  • 文档: 文档显示在浏览器窗口中。它还有自己的多个元素。我们这里只讨论表单。
  • 表单: DOM 层次结构继续向下包含表单的各个元素
DOM 类别: JavaScript 支持三种 DOM 类型,但我们仅讨论适用于 ES6 的类型。
  1. **Legacy DOM:**这是早期版本的 JavaScript 使用的模型。该模型提供只读属性,例如标题、URL 等。它还提供有关整个文档的 LastModified 信息。该模型有很多方法可用于设置和获取文档属性值。
旧版 DOM 的文档属性:
**alinkColor:**此属性定义激活链接的颜色。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.alinkColor
anchors[]: 它是每个锚点对象的数组,一个对应于文档中出现的每个锚点。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.anchors[0],document.anchors[1],...
applets[]: 它是 applet 对象的数组,每个 applet 对应一个出现在文档中的 applet。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.applets[0],document.applets[1],..
bgColor: 该属性定义文档的背景颜色。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.bgColor
Cookie: 此属性定义具有特殊行为的值属性,允许设置与要查询的文档关联的 cookie。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.cookie
Domain: 此属性定义文档所属的域,已用于安全目的。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.domain
embeds[]: plugins[] 的同义词。它是表示文档中嵌入的数据的对象数组
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.embeds[0],document.embeds[1],...
fgColor: 此属性定义文档的默认文本颜色。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.fgColor
forms[]: 它是表单对象的数组,每个对象对应一个表单对象,如表单中所示。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.forms[0],document.forms[1],...
images[]: 它是表单对象的数组,每个元素对应表单中出现的带有
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.images[0[,document.images[1],...
lastModified: 此属性定义最近更新的日期。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.lastModified
linkColor: 此属性定义未访问链接的颜色,它与vlinkColor相反。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.linkColor
links[]: 文档链接数组。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.links[0],document.links[1],...
Location: 该属性保存文档的 URL。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.location
plugins[]: 此属性是 embeds[] 的同义词。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.plugins[0],document.plugins[1],...
Referrer: 包含文档 URL(如果与任何文档链接)的字符串。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.referrer
Title: 标签的内容。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>

<head>
	<title>Legacy DOM example</title>
	<script type="text/javascript">
		function func1() {
			var a = document.title;
			alert("Document title: " + a);

		}

		function func2() {
			var b = document.URL;
			var c = document.lastModified;
			var d = document.location;

			document.write("Document URL: " + b);
			document.write("Document last modified: " + c);
			document.write("Document location: " + d);

		}

		function func3() {
			var n = document.forms[1];
			document.write("Second form elements: " + n);
		}
	</script>
</head>

<body>
	<center>
		<h1 style="color: green">GeeksforGeeks</h1>
		<b>Document to try Legacy DOM elements.</b>
		<form name="form1">
<p>Section 1:</p>
			<button name="b1" id="1"
					value="title" onclick="func1()">
			Title
			</button>
			<button name="b2" id="2"
					value="INFO" onclick="func2()">
			URL
			</button>
		</form>
		<br>

		<form name="form2">
			Section 2:
			<br>
			<br>
			<button name="bt1" id="1"
					value="submit" onclick="func3()">
			Elements
			</button>
		</form>
</center>
</body>

</html>

输出:

W3C DOM: 该 DOM 遵循万维网联盟标准,其中规定:

“文档对象模型是一个平台和语言中立的接口,允许程序和脚本动态访问和更新文档的内容、结构和样式。”*

该模型主要关注语言中立性,以便使脚本编写和样式化文档变得容易。

W3C DOM 中的文档属性:

body: 标签的内容。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.body
defaultView: 表示显示文档的窗口。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.defaultView
documentElement: 对文档标签的引用。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.documentElement
implementation: 表示 DOMImplementation 对象,该对象表示创建此文档的实现。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.implementation

W3C DOM 中的文档方法:

createAttribute(name_of_attr): 返回一个新创建的具有指定名称的 Attr 节点。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.createAttribute(name_of_attr)
createComment(text): 创建并返回一个包含指定文本的新注释节点。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.createComment(some_text)
createDocumentFragment(): 创建并返回一个空的 DocumentFragment 节点。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.createDocumentFragment()
createElement(tagname_of_new_ele): 创建并返回具有指定标记名的新 Element 节点。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.createElement(tagname_of_new_ele)
createTextNode(text): 创建并返回一个包含指定文本的新文本节点。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.createTextNode(text)
getElementById(Id): 从具有提到的 Id 的元素的文档中返回值。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.getElementById(Id)
getElementsByName(name): 从文档中返回具有指定名称的节点数组。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.getElementsByName(name)
getElementsByTagName(tagname): 返回文档中具有指定标记名的所有元素节点的数组。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.getElementsByTagName(tagname)
importNode(importedNode, deep): 从适合插入到此文档中的其他文档创建并返回节点的副本。如果 deep 参数为真,它也会递归地复制该节点的子节点。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.importNode(importedNode, deep)

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>

<head>
	<title>W3c example</title>
	<script type="text/javascript">
		function hello() {
			var n = document.getElementById('2').value;
			document.write("Hello " + n);

			var a = document.body;
			document.write("</br>Document body:" + a);

			var b = document.defaultView;
			document.write("</br>Document default view: " + b);

		}
	</script>
</head>

<body>
	<center>

		<h1 style="color: green">
	hello demo!
		</h1>
<p>
		Hello from GeeksforGeeks, this is 
		an example representation.
		</p>
		<form name="myform">
			<b>Name:</b>
			<input type="text" name="name" id="2">
			<input type="submit" name="submit"
				value="submit" onclick="hello()">

		</form>
	</center>
</body>
</html>		 

输出:

3. IE4 DOM:该DOM是在Internet Explorer版本4中引入的。

后续版本进行了扩展并继续包含 W3C DOM 的功能。

IE4 DOM 中的文档属性:

activeElement:指当前活动的输入元素。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.activeElement
all[]: 文档中所有元素对象的可索引数组。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.all[]
  
 此函数用于检查网页中是否存在特定元素,但现在已被视为已弃用,
 因为它仅适用于 Internet Explorer,并且在其他浏览器中不受支持。
charset: 文档的字符集。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.charset
children[]: 包含文档直接子级 HTML 元素的数组。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.children[]
defaultCharset: 文档的默认字符集。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.defaultCharset
expando: 当此属性设置为 false 时,它会阻止客户端对象扩展。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.expando
parentWindow: 包含窗口的文档。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.parentWindow
readyState: 指定文档的加载状态。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.readyState
uninitialized: 文档尚未开始加载。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.uninitialized
loading: 文档正在加载
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.loading
interactive: 文档已加载到足以供用户交互。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.interactive
complete: 文档已加载。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.complete

IE4 DOM 中的文档方法:

elementFromPoint(x,y): 返回位于指定点的元素。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.elementFromPoint(x,y)

Example:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>

<head>
	<title>IE4 DOM example</title>
	<script type="text/javascript">
		function func1() {
			var a = document.all["greetings"];
			alert("Hey, " + a.innerHTML);

		}

		function func2() {
			var b = document.activeElement;
			document.write("Active element: " + b);

		}
	</script>
</head>

<body>
	<center>
		<h1 style="color: green">
		demo
		</h1>
	
		<h4 id="greetings">
		Hello from GeeksforGeeks, this is 
		an example representation.
		</h4>
	
		<form name="myform">
			<input type="submit" name="b1"
				value="Greet" onclick="func1()">
			<input type="text" name="text1">
			<input type="submit" name="b2"
				onclick="func2()">
		</form>
	</center>

</body>

</html>

输出:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
供应链投毒预警 | 开源供应链投毒202404月报发布(含投毒案例分析)
悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库,结合程序动静态分析方式对潜在风险的开源组件包进行动态跟踪和捕获,发现大量的开源组件恶意包投毒攻击事件。在2024年4月份,悬镜供应链安全情报中心在NPM官方仓库(https://www.npmjs.com/)和Pypi官方仓库(https://pypi.org/)上共捕获772个不同版本的恶意组件包,其中NPM仓库投毒占比接近89%, Pypi仓库投毒占比11%;Pypi官方仓库经历3月份遭受集中式投毒后,对新发布组件包进一步加强审查力度,本月Pypi恶意投毒攻击呈现大幅下降趋势。
OpenSCA社区
2024/05/21
3481
供应链投毒预警 | 开源供应链投毒202404月报发布(含投毒案例分析)
供应链投毒预警:恶意Py包伪装HTTP组件开展CStealer窃密后门攻击
近日(2024年4月25号),悬镜供应链安全情报中心在Pypi官方仓库(https://pypi.org/)中捕获1起CStealer窃密后门投毒事件,投毒者连续发布6个不同版本的恶意Py包multiplerequests,目标针对windows平台python开发者,该恶意包在安装时会远程加载CStealer后门到受害者系统上执行,该后门会窃取受害者系统敏感信息、主流浏览器隐私数据、数字货币钱包应用数据以及系统屏幕截屏等。此外,后门还会尝试驻留Windows系统启动目录实现开机自启动。
OpenSCA社区
2024/04/30
1670
供应链投毒预警:恶意Py包伪装HTTP组件开展CStealer窃密后门攻击
供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击
本周(2024年01月15号),悬镜供应链安全实验室在Pypi官方仓库(https://pypi.org/)中捕获1起Py包投毒事件,投毒者利用包名错误拼写(typo-squatting)的攻击方式来仿冒谷歌开源的tensorflow机器/深度学习框架,投毒攻击目标锁定AI开发者。
OpenSCA社区
2024/01/22
3140
GitHub遭遇严重供应链“投毒”攻击
Checkmarx 在一份技术报告中提到,黑客在这次攻击中使用了多种TTP,其中包括窃取浏览器cookie接管账户、通过验证提交恶意代码、建立自定义Python镜像,以及向PyPI注册表发布恶意软件包等。
FB客服
2024/04/01
4090
GitHub遭遇严重供应链“投毒”攻击
供应链安全情报 | 恶意py包伪装代理SDK进行后门攻击,目标锁定python开发者
2023年11月28号,悬镜供应链安全实验室在Pypi官方仓库(https://pypi.org)监测到两起伪装成http和socks5代理SDK的开源组件投毒事件。python开发者一旦下载安装这些投毒Py包(libproxy、libsocks5),会触发执行Py包中的恶意代码,最终将导致开发者系统被投毒者植入恶意后门。
OpenSCA社区
2023/12/01
4560
供应链安全情报 | 恶意py包伪装代理SDK进行后门攻击,目标锁定python开发者
重大SBOM风险预警 | 总下载量超百万次开源NPM组件被投毒
近日(2025.03.25),悬镜供应链安全情报中心在NPM官方仓库(www.npmjs.com)中捕获1起针对全球知名薪酬数据统计平台 PayScale 旗下开源NPM组件 country-currency-map的供应链投毒事件。country-currency-map 是一款可以帮助前端开发人员快速获取货币和国家/地区关系,便于开发国际化应用的开源组件。截至目前 country-currency-map 组件在NPM官方仓库总下载量已超过百万次。
软件供应链安全工具推荐
2025/03/31
1280
重大SBOM风险预警 | 总下载量超百万次开源NPM组件被投毒
供应链投毒预警 | 开源供应链投毒202401最新月报来啦!
悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库,结合程序动静态分析方法对潜在风险的开源组件包进行分析和监测,捕获大量开源组件恶意包投毒攻击事件。2024 年 1 月份,悬镜供应链安全情报中心在 Npm 官方仓库(https://www.npmjs.com/)和 Pypi 官方仓库(https://pypi.org/)上共捕获 675 个不同版本的恶意投毒包,其中 Npm 仓库投毒占比 90.48%, Pypi 仓库投毒占比 9.52%, 从每日捕获的投毒包数据来看,Npm 仓库仍然是开源组件投毒的重灾区。
OpenSCA社区
2024/03/02
4080
【安全通知】PyPI 官方仓库遭遇request恶意包投毒
近日,腾讯洋葱反入侵系统检测发现 PyPI官方仓库被恶意上传了request 钓鱼包,由于国内开源镜像站均同步于PyPI官方仓库,所以该问题不仅会通过官方仓库,还可能通过各个开源镜像站影响广大用户,腾讯安全应急响应中心(TSRC)秉承共建安全生态的原则,TSRC在此建议各开源镜像站以及对开源镜像站有依赖的公司,请尽快自查处理,确保恶意库得到清除,保障用户安全。
腾讯安全应急响应中心
2020/08/05
9270
【安全通知】PyPI 官方仓库遭遇request恶意包投毒
供应链投毒预警 | 恶意NPM包利用Windows反向shell后门攻击开发者
本周(2024年02月19号),悬镜供应链安全情报中心在NPM官方仓库(https://npmjs.com)中发现多起NPM组件包投毒事件。攻击者利用包名错误拼写方式 (typo-squatting)在NPM仓库中连续发布9个不同版本的恶意包,试图通过仿冒合法组件(ts-patch-mongoose)来攻击潜在的NodeJS开发者。
OpenSCA社区
2024/02/29
3750
数百万个GitHub仓库被发现感染恶意代码
最近,安全公司Apiiro的一份报告揭示了一种名为“仓库混淆”攻击,该攻击已经影响了GitHub上的超过100,000个仓库。
星尘安全
2024/10/17
2390
数百万个GitHub仓库被发现感染恶意代码
初级程序才删库跑路,而高级的已经代码投毒了。
  借用习大大的一句话:安全是发展的保障,发展是安全的目的。 这句话不仅仅适用于实体经济,也适用于互联网。
TodoCoder
2022/09/23
6560
初级程序才删库跑路,而高级的已经代码投毒了。
【安全通知】PyPI 官方仓库遭遇covd恶意包投毒
近日,腾讯洋葱反入侵系统检测发现 PyPI官方仓库被恶意上传了covd 钓鱼包,并通知官方仓库下架处理。由于国内开源镜像站均同步于PyPI官方仓库,所以该问题不仅会通过官方仓库,还可能通过各个开源镜像站影响广大用户,腾讯安全应急响应中心(TSRC)秉承共建安全生态的原则,TSRC在此建议各开源镜像站以及对开源镜像站有依赖的组织和公司,请尽快自查处理,确保恶意库得到清除,保障用户安全。
腾讯安全应急响应中心
2020/11/18
5630
【安全通知】PyPI 官方仓库遭遇covd恶意包投毒
PyPI代码库又现恶意软件包,腾讯安全威胁情报已收录,专家提醒码农小心供应链攻击
据Jfrog科技博客报道,在 PyPI 存储库中发现几个恶意代码,攻击者试图植入后门、窃取信用卡信息、窃取浏览器敏感数据、截屏并上传到指定地址。相关恶意代码在从PyPI网站删除之前已被下载3万次,腾讯安全专家发现国内部分镜像库尚存在这些恶意代码,腾讯安全专家建议软件开发人员从PyPI 代码库下载资源时,注意进行安全审核,避免将恶意代码安装到自己的开发环境中。
腾讯安全
2021/08/04
1.1K0
PyPI代码库又现恶意软件包,腾讯安全威胁情报已收录,专家提醒码农小心供应链攻击
Web3 开发的安全性
Web3 开发的安全性至关重要,因为区块链和去中心化应用(DApps)涉及资产管理和用户隐私,一旦出现漏洞,可能导致严重的经济损失和信任危机。以下是 Web3 开发中的主要安全挑战及解决方案。
数字孪生开发者
2025/01/28
1120
Web3 开发的安全性
攻防演练|RASP让WebShell攻击破防了
WebShell 是一种通过浏览器来进行交互的Shell,而且是黑客通常使用的一种恶意脚本,通常被攻击者用来获取对应用服务器的某些操作权限。攻击者通过渗透系统或网络,然后安装 WebShell ,攻击者可以在应用服务器上执行敏感命令、窃取数据、植入病毒,危害极大。而且, WebShell 隐蔽性极强,传统的流量侧方案对其防御效果不佳。本文将为大家介绍一下常见的 WebShell 类型以及 RASP 如何对其进行防御。
云鲨RASP
2023/04/14
8770
PyPI 中发现六个针对 Windows 用户的恶意软件包
研究人员发现的 6 个恶意软件包,都缺少与之关联的 GitHub 存储库。合法软件包通常都会有与之关联的存储库,而恶意软件包为了隐藏代码则通常不会关联。执行后,恶意软件包会收集敏感数据并将其发送到第三方 URL。
FB客服
2023/08/08
2850
PyPI 中发现六个针对 Windows 用户的恶意软件包
朝鲜 Lazarus 黑客通过 npm 包感染了数百人
在 npm(Node 包管理器)平台上,研究人员发现了六个与朝鲜黑客组织 Lazarus 相关的恶意程序包。截至目前,这些恶意包已被下载 330 次,它们的目标是窃取用户账户凭据、在受感染系统中植入后门,以及获取敏感的加密货币信息。
星尘安全
2025/03/17
470
朝鲜 Lazarus 黑客通过 npm 包感染了数百人
RASP解决Java安全问题探讨
Java 语言在应用场景下有更健全的性能,对于很多企业而言是应用程序编写选择中的 Plan A。树大招风,这也使得它成为攻击者重点关注的对象。
云鲨RASP
2023/04/17
1K0
SolarWinds漏洞四周年,供应链攻击已成企业「大麻烦」
四年前,SolarWinds 供应链攻击事件闹得「沸沸扬扬」,将供应链安全问题与危害性摆在「明面上」,如今四年过去了,我们又陆续经历了包括 Apache Log4j2 在内的多个供应链事件,接下来组织与企业该如何应对供应链安全的挑战?
FB客服
2024/04/25
6500
SolarWinds漏洞四周年,供应链攻击已成企业「大麻烦」
PyPI中发现新恶意Python库
Check Point的安全研究人员在Python软件包索引(PyPI)上发现了10个恶意软件包,这是Python开发人员使用的主要Python软件包索引。 第一个恶意软件包是Ascii2text,这是一个通过名称和描述模仿流行艺术包的恶意包。在Check Point的公告中称攻击者为了防止用户意识到这是个恶意假包,因此复制了整个项目描述,而非过去常见的部分复制描述。一旦下载了Ascii2text,其将会通过下载一个脚本,收集存储在谷歌浏览器、微软Edge、Brave、Opera和Yandex浏览器等网络
FB客服
2023/03/30
6360
PyPI中发现新恶意Python库
推荐阅读
相关推荐
供应链投毒预警 | 开源供应链投毒202404月报发布(含投毒案例分析)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验