DOM
document
document.activeElement
返回当前在 DOM 或者 shadow DOM 树中处于聚焦状态的 Element
// 判断输入框是否聚焦
document.getElementById('#input') == document.activeElementscrollWidth、clientWidth、offsetWidth的区别
- 网页可见区域宽:document.body.clientWidth;
- 网页可见区域高:document.body.clientHeight;
- 网页可见区域高:document.body.offsetWeight:
- 网页可见区域高:document.body.offsetHeight;
- 网页正文全文宽:document.body.scrollWidth;
- 网页正文全文高:document.body.scrollHeight;
- 网页被卷去的高:document.body.scrollTop;
- 网页被卷去的左:document.body.scrollLeft;
- 网页正文部分上:window.screenTop;
- 网页正文部分左:window.screenLeft;
- 屏幕分辨率的高:window.screen.height;
- 屏幕分辨率的宽:window.screen.width;
- 屏幕可用工作区高度:window.screen.availHeight;
- 屏幕可用工作区宽度:window.screen.availWidth;
scrollWidth 是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会改变对象的实际宽度)
clientWidth 是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。
offsetWidth 是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。
HTMLCollection 和 NodeList
NodeList 类型
NodeList 类型是一组节点的集合,通常由查询 DOM 树返回。它是一个类数组对象,它的每个元素都是一个 Node 类型的节点。NodeList 类型是只读的,不能直接修改其中的元素。
HTMLCollection 类型
HTMLCollection 类型是一组元素节点的集合,通常由查询 DOM 树返回。它是一个类数组对象,它的每个元素都是一个 Element 类型的元素节点。HTMLCollection 类型也是只读的,不能直接修改其中的元素。
如何获取
HTMLCollection
document.getElementsByTagNamedocument.getElementsByClassNameHTMLElement.childrendocument.formsdocument.images
NodeList:
document.getElementsByNamedocument.querySelectorAllHTMLElement.childNodes
最重要的区别是,HTMLCollection 仅包含 tags(以及id/name分别标记的) 元素, 而 NodeList 包含所有的节点。
差异:
NodeList类型和HTMLCollection类型都是只读的,不能直接修改其中的元素。但NodeList类型通常是动态的,即当 DOM 树发生变化时,NodeList对象会自动更新。而HTMLCollection类型通常是静态的,即它们只包含文档加载时存在的元素节点,不会自动更新。HTMLCollection元素可以通过name,id或index索引来获取。NodeList只能通过index索引来获取。NodeList类型和HTMLCollection类型都具有一些相似的属性和方法,例如length、item()和[index]。但HTMLCollection类型还具有一个特有的方法namedItem(),它可以根据元素的名称或 ID 返回元素节点。HTMLCollection和NodeList本身无法使用数组的方法,都是类数组,NodeList可以直接使用forEach()方法
参考blog
