DOM与各类事件

168 阅读3分钟

操作DOM

常规意义上的 操作DOM, 就是增删改查

创建元素节点

语法:document.createElement("元素名")

创建文本节点

语法:document.createTextNode("元素名")

增加DOM(添加到父节点最后)

语法:.appendChild()

增加DOM(添加到父节点最后)

语法:.insertBefore()

如果想要添加到指定位置,括号里需要传前一位指定的子元素

删除DOM

语法:.removeChild(要删除的节点)

修改DOM

语法:.replaceChild(新的节点, 要被修改的节点)

克隆DOM

语法: 想要复制的节点.cloneNode(参数布尔值)

参数false不克隆子节点,参数true克隆子节点

如果不行布尔值默认false

获取元素偏移量

获取元素相对父级

语法:元素.offsetParent

获取元素向左偏移量

语法:元素.offsetLeft

获取元素顶部偏移量

语法:元素.offsetTop

获取元素尺寸

两种方法:

(1)语法:offsetXXX

获取的是实际宽度+padding+border

(2)语法:clientXXX

获取的是实际宽度+padding(不包含border)

获取浏览器尺寸

两种方法

(1)语法:window.innerXXX

计算时会包含浏览器滚动条

(2)语法:document.documentElement.clientXXX

计算时不会计算浏览器滚动条(只计算浏览器可视区域)

js事件

什么是js事件:在某一个时刻, 用户(在页面)做了某一件事, 需要给出的反馈

事件的三要素:1. 事件源 2. 事件类型 3. 事件处理函数

DOM 0级事件绑定:事件源.on + 事件类型 = 事件处理函数

0级事件绑定缺点:无法绑定多个同类型的事件, 后边新写的事件, 会覆盖掉原有的事件

DOM 2级事件绑定(事件监听),事件源.addEventListener('事件类型', 事件处理函数)

2级事件可以绑定多个类型的事件

鼠标事件

(1)左键单击

语法:.onclick = function () {}

左键单击元素时触发

(2)左键双击

语法:.ondblclick = function () {}

左键双击元素时触发(300ms内连续点击两次)

(3)右键单击

语法:.oncontextmenu = function () {}

右键单击元素是触发

(4)鼠标左键按下时触发

语法:.onmousedown = function () {}

鼠标左键按下元素时触发

(5)鼠标左键抬起时触发

语法:.onmouseup = function () {}

鼠标左键按下元素抬起时触发

(6)鼠标移入事件

语法:.onmouseover = function () {}

鼠标的移动到元素内部时触发

(7)鼠标移出事件

语法:.onmouseout = function () {}

鼠标移动出元素内部时触发

(8)鼠标移动事件

语法:.onmousemove = function () {}

鼠标在元素内部移动时触发

(9)鼠标移入事件2

语法:.onmouseenter = function () {}

鼠标的移动到元素内部时触发的第二种方法

(10)鼠标移出事件2

语法:.onmouseleave = function () {}

鼠标移动出元素内部时触发的第二种方法

onmouseover onmouseout:两个方法移入元素和移入元素子盒子时都会触发

onmouseenter onmouseleave:两个方法只会在移入元素时触发

键盘事件

(1)键盘抬起事件

语法:.onkeyup = function () {}

键盘抬起时触发

(2)键盘按下事件

语法:.onkeydown = function () {}

键盘按下时触发

(3)键盘按下抬起事件

语法:.onkeypress = function () {}

键盘按下抬起时触发

表单事件

(1)获得焦点事件

语法:.onfocus = function () {}

(2)失去焦点事件

语法:.onblur = function () {}

(3)文本框内容改变时触发

语法:.onchange = function () {}

获取鼠标位置

获取鼠标按下时的坐标

(1)获取相对于事件源的鼠标坐标点

语法:.offsetX/Y

(2)获取相对于页面的鼠标坐标点

语法:.pageX/Y

(3)获取相对于浏览器窗口的鼠标坐标点

语法:.clientX/Y

获取键盘按键

(1) 返回按下的按键

语法:.key

(2) 返回按下的按键进制码

语法:.keyCode