demo破坏升级

如果我们刚才所解释的dom破坏形式不再是单纯的x一层结构,而是x,y这种形式,两层结构,我们该怎么办

举个例子吧

我们的想法是先取x再取y,想法很简单,现实很苦感,看看结果吧

取出来的是undefined,无法取值

 但是我们通过另一种方式引入name的话就会有奇效

HTMLCollection 是⼀个element 的“集合”类,在最新的Dom 标准中 IDL 描述如下:

[Exposed=Window, LegacyUnenumerableNamedProperties] interface HTMLCollection { readonly attribute unsigned long length; getter Element? item(unsigned long index); getter Element? namedItem(DOMString name); };

⽂中也提到了

 HTMLCollection is a historical artifact we cannot rid the web of. While developers are of course welcome to keep using it, new API standard designers ought not to use it (use sequence in IDL instead). 

它是⼀种历史产物,并且在今天我们也可以继续使⽤这个类,只是对于API 标准设计者不推荐再使⽤。 关于它的⽤法我们可以去看官方文档:

HTMLCollection - Web API 接口参考 | MDN (mozilla.org)

让我们值得注意的是我们可以通过collection[name] 的形式来调⽤其中的元素,所以我们似乎可以通 过先构建⼀个HTMLCollection ,再通过collection[name] 的形式来调⽤。

很明显通过这种方式我们去实操,取出来了

我们来验证这句话

collection[name] 的形式来调⽤

直接让代码中变为一个元素

很明显集合中是有两个元素的

那我们测试一下通过x取值和通过y取值的效果是什么 

x直接是取了整个div

y是把div内部的a取出来了

我们也可以通过利⽤HTML标签之间存在的关系来构建层级关系

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>var log = [];var html = ["a", "abbr", "acronym", "address", "applet", "area", "article", "aside", "audio", "b","base", "basefont", "bdi", "bdo", "bgsound", "big", "blink", "blockquote", "body", "br","button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "command","content", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "dir", "div","dl", "dt", "element", "em", "embed", "fieldset", "figcaption", "figure", "font", "footer","form", "frame", "frameset", "h1", "head", "header", "hgroup", "hr", "html", "i", "iframe","image", "img", "input", "ins", "isindex", "kbd", "keygen", "label", "legend", "li","link", "listing", "main", "map", "mark", "marquee", "menu", "menuitem", "meta", "meter","multicol", "nav", "nextid", "nobr", "noembed", "noframes", "noscript", "object", "ol","optgroup", "option", "output", "p", "param", "picture", "plaintext", "pre", "progress","q", "rb", "rp", "rt", "rtc", "ruby", "s", "samp", "script", "section", "select", "shadow","slot", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary","sup", "svg", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead","time", "title", "tr", "track", "tt", "u", "ul", "var", "video", "wbr", "xmp"];var div = document.createElement('div');for (var i = 0; i < html.length; i++) {for (var j = 0; j < html.length; j++) {div.innerHTML = '<' + html[i] + ' id="element1"><' + html[j] + ' id="element2"></' + html[j] + '></' + html[i] + '>';document.body.appendChild(div); // This line was missing in your original codeif (window.element1 && element1.element2) {log.push(html[i] + ',' + html[j]);}document.body.removeChild(div);}}console.log(log.join('\n'));</script>
</body>
</html>

结果证明这些都可以进行层级嵌套,并且两个里面都可以写id

那么我们试试两层嵌套,接下来的代码x.y是取到它了

 <output id=y>I've beenclobbered</output>

x是取整个from,废话不多说,开始实践

 很明显我们自定义中x.y是取到了中间值

只取x是整个from表单

很明显我们上面的假设成立,那很简单了,我们可以通过这两种方式去进行两层取值,而这种取值的方式标签有以下几种

那么三层关系呢????

我们同样也通过举例来进行说明(将我们上面所说一层和两层的技巧都用到了)

很明显,x是一个集合,x.y把name取出来了,x.z把标签中间的取出来了

验证图:

x.y.z(通过from取id)

单x(集合)

 x.y是from

上面不管是单层、双层、三层我们都是通过id和name去进行的,那我们可不可以自创建属性??

这个问题留给大家作为一个思考题

 

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

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

相关文章

怎么采集GBK或GB2312等特殊字符编码的网站数据

如果要采集的网站是GBK或GB2312等特殊字符编码&#xff0c;采集结果可能是一堆看不懂的文字或乱码&#xff0c;无法使用。 通常网页文章采集工具有字符编码选项&#xff0c;默认是UTF-8&#xff08;现在大部分网站都是&#xff09;&#xff0c;改选为GBK或GB2312字符编码即可&…

[项目设计] 从零实现的高并发内存池(三)

&#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[高并发内存池] ❤️ 前置学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 ​ 目录 4.CentralCache实现 4.1 CentralCache整体架构 4.2 围绕Span的相关设计…

【深圳五兴科技】Java后端面经

本文目录 写在前面试题总览1、java集合2、创建线程的方式3、对spring的理解4、Spring Boot 和传统 Spring 框架的一些区别5、springboot如何解决循环依赖6、对mybatis的理解7、缓存三兄弟8、接口响应慢的处理思路9、http的状态码 写在前面 关于这个专栏&#xff1a; 本专栏记录…

【轮式平衡机器人】——TMS320F28069片内外设之Timer_IT(补:CCS程序烧录方法)

引入 Timer_IT 指的是 TMS320F28069 的定时器中断功能。在微控制器或数字信号控制器中&#xff0c;定时器是一个非常重要的外设&#xff0c;它可以用来产生固定时间间隔的中断&#xff0c;或者用来精确计算时间。 Timer_IT 的主要特点如下&#xff1a; 定时功能&#xff1a;…

React报错 之 Objects are not valid as a React child

原文链接&#xff1a; 1、React报错之Objects are not valid as a React child 2、Objects are not valid as a React child error [Solved] 作者&#xff1a;Borislav Hadzhiev 以下文中涉及到的链接均来自于该作者&#xff0c;他写了很多相关的文章&#xff0c;可以多看看他的…

综合素质保分卷一

10.根据《中华人民共和国预防未成年人犯罪法》的规定&#xff0c;强子多次实施了严重危害社会的行为后&#xff0c;经 由专门教育指导委员会评估同意&#xff0c;&#xff08; D&#xff09;会同公安机关可以决定将其送入专门学校接受专门教育。 A.父母或监护人 B.教师…

深度学习GPU环境安装(WINDOWS安装NVIDIA)

1.检测是否支持GPU环境 1.1.打开设备管理器 winows下面搜索设备管理器&#xff08;或者从桌面"此电脑"——>右键点击——>"管理"打开&#xff09; 1.2.查看本地显卡 在"设备管理器"——"显示适配器"中&#xff0c;如果没有&…

【Python】-----基础知识

注释 定义&#xff1a;让计算机跳过这个代码执行用三个单引号/双引号都表示注释信息&#xff0c;在Python中单引号与双引号没有区别&#xff0c;但必须是成对出现 输出与输入 程序是有开始&#xff0c;有结束的&#xff0c;程序运行规则&#xff1a;从上而下&#xff0c;由内…

低代码平台开发——基于React(文末送书)

目录 小程一言适用对象本书达成 书籍介绍作者简介内容介绍书籍目录阅读指导 小程送书 小程一言 《低代码平台开发——基于React》这本书主要围绕低代码平台和React技术的结合展开&#xff0c;为读者提供了关于低代码平台开发的理论和实践知识。 ## 书中内容简介 书中内容分为…

go-zero入门

本文简单介绍了go-zero&#xff0c;以及go-zero相关的安装配置。通过go-zero的hello world级别的一个的单体应用和一个包含两个服务的微服务应用&#xff0c;以实践的方式展示了go-zero项目的入门级搭建。 文章目录 1. 简介2. 快速开发单体应用3. 微服务应用搭建3.1 用户服务 u…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读书籍【送书活动】

目录 前言一、内容简介二、作者简介三、专家推荐四、读者对象五、目录福利总结 前言 OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景&#xff0c;在多项专业和学术基准测试中表现出的智力水平&#xff0c;不仅接近甚至有时超越了人类的平均水平…

【Docker】Windows11操作系统下安装、使用Docker保姆级教程

【Docker】Windows11操作系统下安装、使用Docker保姆级教程 大家好 我是寸铁&#x1f44a; 总结了一篇【Docker】Windows11操作系统下安装、使用Docker保姆级教程的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 什么是 Docker&#xff1f; Docker 是一个开源平台&…

linux实现远程文件夹共享-samba

目录 问题描述Samba如何挂载常用参数临时挂载实例一种长期挂载方法&#xff08;已失败&#xff0c;仅供参考&#xff09;查看挂载取消挂载umount失败 问题描述 我的代码需要访问存在于两个系统&#xff08;win和linux&#xff09;的文件夹&#xff0c;我不是文件夹的创建者&am…

STM32基础--什么是寄存器

STM32 长啥样 我使用的芯片是 144pin 的 STM32F103ZET6&#xff0c;具体见图 STM32F103ZET6 实物图。这个就是我们接下来要学习的 STM32&#xff0c;它将带领我们进入嵌入式的殿堂。芯片正面是丝印&#xff0c;ARM 应该是表示该芯片使用的是 ARM 的内核&#xff0c;STM32F103Z…

three.js如何实现简易3D机房?(一)基础准备-上

目录 一、tips 二、功能说明 1.模型初始化 2.功能交互 三、初始化准备 1.目录结构 2.创建三要素 3.创建轨道控制器 4.初始化灯光 5.适配 6.循环渲染 一、tips 1.three.js入门的相关基础性知识就不在此过多赘述了&#xff0c;可以自行提前了解 three.js docs&…

Pytest框架中的测试用例执行方式!

前言 本文将针对pytest的核心特性之一——测试用例的执行方式展开深入探讨&#xff0c;并通过详尽的实战示例展示如何在不同环境下灵活操控测试运行&#xff0c;同时全面解析pytest中常见的且极具实用价值的命令行选项。 一、从基础到进阶&#xff1a;pytest在命令行下的测试用…

苹果电脑专业的Mac垃圾清理工具CleanMyMac X4.14.7

CleanMyMac X是一款专业的Mac清理工具&#xff0c;它具有强大的功能和易用的界面&#xff0c;可以帮助用户快速清理Mac上的无用文件和垃圾&#xff0c;优化系统性能&#xff0c;提升电脑运行速度。 该软件的核心功能包括智能扫描与清理、应用程序管理、隐私保护和系统维护等。…

简单介绍SpeechPrompt、SpeechPrompt V2、SpeechGen

主要介绍SpeechPrompt、SpeechPrompt V2、SpeechGen SpeechPrompt 模型结构和原理&#xff08;语音到符号&#xff09; 整体思路&#xff1a;音频特征提取(HuBert/CPC)&#xff0c;离散–》deep prompt speechLM&#xff08;GSLM&#xff09;—》概率映射–>目标Verbaliz…

代码随想录刷题笔记-Day28

1. 重新安排行程 332. 重新安排行程https://leetcode.cn/problems/reconstruct-itinerary/给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯…

计算题--时标网络图

时标网络图相当于是双代号网络图和横道图的结合体&#xff0c;特点是多了虚线和波浪线〰️&#xff0c;虚线代表虚工作&#xff08;只能竖着画&#xff09;&#xff0c;波浪线代表自由时差&#xff08;横着画&#xff09;。 在时标网络图中 找关键路径&#xff0c;没有波浪线的…