javascript - 什么算作查询 DOM?
问题描述
如果我做:
const table = document.getElementById('table1');
接着
const cell = table.rows.item(1).cells.item(1);
我在第二个操作中查询 DOM 吗?
解决方案
是的,Node.childNodes
or的任何变体都会Node.parentNode
查询 DOM。
我们在 JS 世界中可以访问的 Node 对象只是实际 DOM 对象的包装对象。这些包装器对象不包含指向 DOM 树的所有链接,它们所做的只是公开将调用内部 DOM 方法以“查询 DOM”的 getter 函数。
所以即使是抛出 TypeError 的行(因为你可能会item
混淆find
)
const cell = table.rows.find(1).cells.find(1);
将从.rows
getter 中查询 DOM。
然而,对变量的简单访问table
并没有查询 DOM,您确实存储了包装器对象,它保留了对底层 DOM 对象的引用。
请注意,一个例外是“命名元素”(带有 的元素id
),它们存储在可以在 Window 对象上直接访问的 Map 中,因此可以访问 JS。所以实际上,在第一行中你没有查询 DOM。
现在,这有关系吗?不是真的,而且今天的引擎有多快。
推荐阅读
- c# - SQL 查询连接 4 个表并从 3 个不同的表中获取 3 列的总和,并将结果显示到 asp.net mvc 视图中
- haskell - 如何使用“BinaryString.uncons()”但类型与 Word8 不同?
- python-3.x - 在运行时更改模型的根路径 - PyQt5
- java - Firebase NullPointerException 错误,虽然有用户 ID
- github - 为什么我尝试在 Git Hubs 平台上发布网站时在 Github 上得到 404
- java - Java 对象 - 如何动态创建对象
- c# - Zipwise.com 无法创建 SSL/TLS 安全通道
- python - 使用 OpenCV 检测并替换从一张图像到另一张图像的区域
- c# - C# OpenGL OpenTK - 当我调整 eye.X 值时,相机会远离绘图
- javascript - 有没有办法阻止chrome使用javascript在chrome的下拉列表中显示建议?