节点,事件

DOM节点

        就是组成页面的任何一个内容(结构,元素,注释...)

        现在说的节点包含但不限于元素(标签)

        常见的四种节点

                元素节点:每一个标签

                文本节点:页面上每一段文本(包含换行和空格)

                属性节点:书写在标签上的每一个属性

                        注意:属性节点不会独立出现,也不会和任何其他节点产生父子集关系

                注释节点:页面上的每一段注释(包含换行和空格)

        获取节点

                获取元素节点

                        就是指获取元素

                常规获取

                                document . getElementByTagName()

                                document . getElementById()

                                document . getElementByClassName()

                                document . getElementByName()

                                querSelector()

                                querSelectorAll()

        非常规获取

                HTML: document . ddocumentElement

                head: document . head

                body : document . body

        获取节点

                childNodes

                        语法:父元素 . childNodes

                        返回值:是一个伪数组,里面是所有的节点

                children

                        语法:父节点 . children

                        返回值:父节点内部的元素节点,伪数组

                firstChild

                        语法:父节点 . firstChild

                        返回值:父节点内第一个节点

                firstElementChild

                        语法:父元素 . firstElementChild

                        返回值:父节点这种第一个元素节点

                lastChild

                        语法:父节点 . lastChild

                        返回值:父节点内最后一个节点

                lastElementChild

                        语法:父元素 . lastElementChild

                        返回值:父节点这种最后一个元素节点

                previousSibling

                        语法:节点 . previousSibling

                        返回值:就是该节点的上一个兄弟节点

                previousElementSibling

                        语法:节点 . previousElementSibling

                        返回值:就是该节点的上一个元素节点

                nextSibling

                        语法:节点 . nextSibling

                        返回值:就是该节点的下一个兄弟节点

                nextElementSibling

                        语法:节点 . nextElementSibling

                        返回值:就是该节点的下一个兄弟元素节点

                parentNode

                        语法:节点 . parentNode

                        返回值:该节点的父节点

                parentElement

                        语法:节点 . parentElement

                        返回值:该元素的父元素节点

                attributes

                        语法:节点 . attributes

                        返回值:就是该元素上的所有属性

        节点操作

        常见的操作

                创建节点

                创建元素节点

                        语法:document . createElement(" 你要创建的标签 ")

                创建文本节点

                        语法:document . careateTextNode("文本内容")

                插入节点

                        吧一个节点插入另一个节点的内部

                        常用方法

                                appendChild()

                                        语法:父节点 . appendChild(要插入的节点)

                                        插入位置:父节点的最后

                                insertBefore()

                                        语法:父节点 . insertBefore(要插入的节点,谁的前面)

                替换节点

                就是用一个节点吧另一个节点替换掉

                        replaceChild()

                                语法:父节点 . replaceChild(换上节点,换下节点)

                删除节点

                        removeChild()

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

                        remove()

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

                克隆节点

                        常用方法

                        clondNode()

                                语法:要克隆的节点 . cloneNode(参数)

                                参数:默认值是flase,表示不克隆后代元素

                                        选填是true,表示克隆后代元素

节点属性

常见的节点属性

        语法:节点 . nodeType

        nodeType

                返回值:是一个数字

                        元素节点:1

                        属性节点:2

                        文本节点:3

                        注释节点:8

        nodeName

                返回值

                        元素节点:大写标签名

                        属性节点:属性名

                        文本节点:#

                        注释节点:#

        nodeValue

                返回值:

                        元素节点:null

                        属性节点:属性值

                        文本节点:文本内容

                        注释节点:注释内容

事件

        指用户对某事物由于某种行为所产生的操作

两种情况

        程序员:给某种事物绑定某种行为,不执行

        用户:让这个行为发生,这个时候会触发这个行为

事件三要素

        事件源:就是把事件绑定给的那个元素

        事件类型:行为 (click,)

        事件处理程序(事件处理函数):就是行为发生以后要执行的函数

        注意:每一个事件都有三要素

事件绑定

        DOM 0 级事件绑定

                语法:事件源 . on事件类型 = 事件处理程序

                注意:这样的绑定方式给同一个事件源只能绑定一次同类型事件,如果多次绑定,后面的把前面的覆盖

        DOM 2 级事件绑定(事件监听 / 事件侦听器)

                语法:事件源 . addEventListener(' 事件类型 ',事件处理程序)

                注意:可以给同一个事件源绑定多个同类型事件

顺序绑定,顺序执行

事件解绑

        DOM 0 级解绑

                语法:事件源 . on事件类型 = null / undefined

                意义:就是当我们行为触发以后没有要执行的代码

                        就相当于解绑时间

        DOM 2 级事件解绑

                语法:事件源 . removeEvenListener(事件类型,事件处理函数)

                注意:如果想要解绑,事件处理程序需要单独定义,绑定和解绑的函数要是同一个函数

事件类型

        我们对事件类型进行分类

                鼠标事件

                键盘事件

                表单事件

                触摸事件

                浏览器事件

                拖拽事件

                其他事件

        鼠标事件

                借助于鼠标来触发的事件

                        click:鼠标左键单击行为

                        dblclick:鼠标左键双击行为

                        contextmenu:鼠标右键单击行为

                        mouseover:鼠标进入事件

                        mouseout:鼠标离开事件

                                特点:进入后代元素中也会触发这个事件

                        mouseenter:鼠标进入事件

                        mouseleave:鼠标离开事件

                                特点:不会在后代元素身上触发事件

                        mousemove:鼠标移动事件

                        mousedown:鼠标按下事件

                        mouseup:鼠标抬起事件

        键盘事件

                由键盘上的按键触发的事件

                        keydown:键盘按下事件

                        keyup:键盘抬起事件

                        keypress:键盘的键入事件

                        这个事件可以绑定给任何按键,但是只有能键入内容的按键才能触发

        表单事件

                常用方法

                        focus:获取焦点事件(聚焦)

                        blur:失去焦点事件(失焦)

                        input:随着输入和删除实时触发

                        submit:表单提交事件

                                这个事件要添加给form标签

                        reset:表单重置事件

                        change:内容发生改变以后触发事件

        触摸事件

                添加给可以触摸改变的设备

                常用方法

                        touchstart:就是在接触到屏幕时触发

                        touchmove:在移动时触发这个事件

                        touchend:离开屏幕一瞬间触发这个事件

        拖拽事件

                在浏览器中内容被拖拽

                一个拖拽时间可能关联两个元素

        拖拽元素

        拖放元素

        拖拽元素

        拖拽前提是这个元素可以被拖拽

                属性:draggable = "true",使之可以被拖动

        拖拽事件

                dragstart:开始拖拽的一瞬间开始触发

                drag:开始移动的时候触发这个事件

                dragend:释放的一瞬间触发

        拖放元素

                dragenter:进入要存放的元素的时候触发(光标进入时)

                dragleave:就是在元素离开时触发(光标离开时)

                drop:在元素移动时触发

        注意:需要在这个事件触发之前需要一个事件,这个事件叫做dragover

        需要在这个事件中阻止默认行为

                retrn flase

事件对象

        当事件发生以后,对本次事件的信息的一个详细记录

        当事件触发后,专门用来记录本次事件的详细信息的东西

获取事件对象

        就是在事件处理函数中的小括号中传递一个参数即可

        这个参数就是我们的事件对象

        一般这个参数叫做:e,ev,event

事件对象的信息之鼠标事件

        就是这个信息在事件对象内部

        想要获取到这个信息,前提一定要有事件对象,最前提有事件行为触发

        鼠标事件中

                最相关的是鼠标坐标点

                三组获取坐标点方法

                       client

                        offset

                        page

        client一组

                语法:获取x轴:事件对象 . clientX

                        获取y轴:事件对象 . clientY

                返回值:就是一组坐标点

                注意:返回的这组坐标点是相对于浏览器窗口左上角的距离

        offset一组

                语法:获取x轴:事件对象 . offsetX

                        获取y轴:事件对象 . offsetY

                返回值:就是一组坐标点

                注意:相对与当前元素左上角的距离

        page一组

                语法:获取x轴:事件对象 . pageX

                        获取y轴:事件对象 . pageY

                返回值:就是一组坐标点

                注意:相对与文档流左上角的距离

事件对象内信息之键盘事件

        按下的是哪个按键(按键的值)

        键盘上每一个按键都有一个值

        获取按键值

                语法:事件对象 . keyCode

                返回值:按键的值

        组合按键

                altKey:

                shiftKey:

                ctrlKey:

                metaKey(win系统的是win键,os系统的是command键)

        返回值都是一个布尔值

                ture表示按下

                false表示没有按下

事件传播

        当事件发生以后,该行为沿着结构父级向上传播,直到window

        如果我们的上级中也有同类型的事件,就会触发

事件流

        就是事件执行的过程

        三个过程

                事件捕获:就是从window到准备触发事件的目标元素的过程

                事件目标:就是准确触发事件的某个元素

                事件冒泡:就是

        从准确触发事件的那个目标到window的过程

        标准浏览器

                默认在冒泡阶段执行

                可以在捕获阶段执行,但需要执行一些操做

        ie浏览器:

                只能在冒泡阶段执行

                如何在捕获阶段执行

                必须在标准浏览器中

                需要DOM2级事件绑定

        需要传递第三个参数,默认是false,表示在冒泡阶段执行

                选填是true,表示在捕获阶段执行

阻止事件冒泡

        就是有的时候不需要这个行为继续向上传播,这个时候就需要阻止这个行为向上传播

        又因为我们的事件是默认在冒泡阶段执行

        所以我们把这个阻止事件传播也一般叫做阻止事件冒泡

        如何阻止事件冒泡

                标准浏览器

                        语法:事件对象 . stopPropagation()

        ie低版本

                ​​​​​​​        ​​​​​​​        

        阻止默认行为

                第一种方式

                        标准浏览器:

                                语法:事件对象 . prevntDefault()

                ie低版本

                        语法:事件对象 . returnValue = false

                兼容性问题

                        try {} catch(){}

        第二种方式

                return false

        这种方式可以阻止默认行为,但是需要写在所有代码的末尾

事件委托

        就是本应该添加在自己身上的事件,添加在结构上级

        采用就近原则,委托给父级

        找到一个公共的父级

        原理

利用事件冒泡,因为事件冒泡直接到window

事件委托

        语法:事件对象 . target

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值