JavaScript DOM 操作
HTML DOM(文档对象模型)
当网页被加载时,浏览器会创建页面的文档对象模型(
Document Object Model)。
HTMLDOM树

1 |
|
通过可编程的对象模型,
JavaScript可以创建动态的HTML。- 改变页面中
HTML的元素 - 改变页面中
HTML的属性 - 改变页面中
CSS的样式 - 对页面中的事件做出反应
- 改变页面中
查找HTML元素
- 通过
id查找
1 | var x = document.getElementById("intro"); |
- 通过标签名查找
1 | var x = document.getElementById("main"); |
- 通过类名查找
1 | var x = document.getElementsByClassName("intro"); |
改变HTML
- 改变
HTML输出流
1 | document.write(Date()); |
- 改变
HTML内容
1 |
|
- 改变
HTML属性
1 |
|
改变CSS
- 改变
HTML样式
1 |
|
注意:
CSS属性使用中划线(-)分隔,在JS中,需要换成驼峰式写法。
- 使用事件
1 |
|
DOM 事件
- 对事件做出反应
在事件发生时执行
JavaScript,可以完成一系列功能。
eg:
当用户点击鼠标时;
当网页已加载时;
当图像已加载时;
当鼠标移动到元素上时;
当输入字段被改变时;
当提交HTML表单时;
当用户触发按键时;
onload和onunload事件onload和onunload事件会在用户进入或离开页面时被触发onload事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本onload和onunload事件可用于处理cookie
onchange事件
1 |
|
注意:点击回车或者离开输入框后事件触发。
另一种写法:
1 |
|
实现了同样的效果,但第二种写法在一开始就通过
this获取了输入框的值以实参的方式传入方法。
onmouseover和onmouseout事件
1 |
|
onmousedown、onmouseup以及onclick事件- 当点击鼠标按钮时,会触发
onmousedown事件 - 当释放鼠标按钮时,会触发
onmouseup事件 - 当完成鼠标点击时,会触发
onclick事件
- 当点击鼠标按钮时,会触发
1 |
|
DOM 事件监听
addEventListener()方法addEventListener()方法用于向指定元素添加事件句柄addEventListener()方法添加的事件句柄不会覆盖已存在的事件句柄- 可以向一个元素添加多个事件句柄
- 可以向同个元素添加多个同类型的事件句柄,如:两个
"click"事件
语法:
1 | element.addEventListener(event, function, useCapture); |
第一个参数是事件的类型 (如 “click” 或 “mousedown”;
第二个参数是事件触发后调用的函数(只是函数名,不加括号;加括号是直接调用);
第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
1 |
|
- 传递参数
当传递参数值时,使用
"匿名函数"调用带参数的函数
1 |
|
- 事件冒泡或事件捕获
事件传递有两种方式:冒泡与捕获。
事件传递定义了元素事件触发的顺序。 如果将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 "click" 事件先被触发呢?
在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件。
在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。
addEventListener() 方法可以指定 "useCapture" 参数来设置传递类型
默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。
removeEventListener()方法
1 | element.removeEventListener("click", clickHandle); |
DOM 元素
创建新的
HTML元素 (节点)appendChild()- 添加到元素尾部
1 |
|
创建新的
HTML元素 (节点)insertBefore()- 添加到开始位置
1 |
|
移除已存在的元素
removeChild()
1 |
|
已知要查找的子元素,然后查找其父元素,再删除这个子元素(删除节点必须知道父节点):
1 |
|
替换
HTML元素replaceChild()
1 |
|