编程助手JavaScript学习库-DOM笔记
声明:本文内容来源于编程助手APP的JavaScript学习库
DOM可以理解成文档(HTML文档、XML文档和SVG文档)的编程接口。
将新节点插在当前节点的最前面(即变成第一个子节点),可以使用当前节点的firstChild属性。
parentElement.insertBefore(newElement, parentElement.firstChild);
clientWidth
属性,clientHeight
属性,这两个属性返回视口(viewport)的大小,单位为像素。所谓“视口”,是指用户当前能够看见的那部分网页的大小。offsetWidth
属性,offsetHeight
属性,这两个属性返回html元素的宽度和高度,即网页的总宽度和总高度。下面的代码用来检查网页是否加载成功:
if (document.readyState === 'complete') {
// ...
}
// 轮询检查
var interval = setInterval(function() {
if (document.readyState === 'complete') {
clearInterval(interval);
// ...
}
}, 100);
- 如果希望向监听函数传递参数,可以用匿名函数包装一下监听函数。
function print(x) {
console.log(x);
}
var el = document.getElementById("div1");
el.addEventListener("click", function(){print('Hello')}, false);
//上面代码通过匿名函数,向监听函数print传递了一个参数。
当一个事件发生以后,它会在不同的DOM节点之间传播(propagation)。这种传播分成三个阶段:
- 第一阶段:从window对象传导到目标节点,称为“捕获阶段”(capture phase)。
- 第二阶段:在目标节点上触发,称为“目标阶段”(target phase)。
- 第三阶段:从目标节点传导回window对象,称为“冒泡阶段”(bubbling phase)
事件传播的最上层对象是
window
,接着依次是document
,html
(document.documentElement)和body
(document.dody)。也就是说,如果body
元素中有一个div
元素,点击该元素。事件的传播顺序,在捕获阶段依次为window、document、html、body、div;在冒泡阶段依次为div、body、html、document、window。事件发生以后,会生成一个事件对象,作为参数传给监听函数。
如果监听函数最后返回布尔值false
(即return false
),浏览器也不会触发默认行为,与preventDefault方法有等同效果。由于DOM没有提供像
complete
属性那样的,判断是否发生加载错误的属性,所以error事件的监听函数最好放在img元素的HTML属性中,这样才能保证发生加载错误时百分之百会执行。CSS模块的侦测:一个比较普遍适用的方法是,判断某个DOM元素的style对象的某个属性值是否为字符串。
typeof element.style.transform === 'string';
//如果该属性不存在,则会返回undefined。
- DOM节点的style对象无法读写伪元素的样式,这时就要用到window对象的
getComputedStyle
方法,使用window.getComputedStyle
对象的getPropertyValue
方法,获取伪元素的属性。
var result = window.getComputedStyle(test, ':before')
.getPropertyValue('content');
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现