摸鱼不如来了解一下--DOM文档对象模型(事件)|8月更文挑战

226 阅读3分钟

这是我参与8月更文挑战的第19天,活动详情查看:8月更文挑战

事件

事件三要素

事件元-->触发事件的对象(谁触发)

事件类型-->如何触发事件(如:鼠标点击、鼠标经过、键盘按下)

image.png

事件处理程序-->通过一个函数赋值的方式完成

执行事件的三个步骤

1、获取事件源

2、注册事件(绑定事件)   --> 事件源.触发方式

3、添加事件处理程序(采取函数赋值的形式)

image.png

DOM操作元素

我们可以利用DOM操作元素来改变元素里面的内容、样式等

两个修改元素内容的属性

1、element.innerText(非标准)

选中从起始位置到终止位置的内容,但是他会除去HTML标签,同时空格和换行也会去掉

image.png

利用DOM操作元素也可以不用添加事件,直接令element.innerText等于想要的修改即可

image.png

2 、element.innerHTML(w3c推荐)

选中从起始位置到终止位置的全部内容,包括HTML标签,同时保留空格和换行

区别:element.innerText不能识别HTML标签,element.innerHTML能够识别HTML标签

image.png

image.png

image.png

操作元素属性(元素本身自带属性)-->element.属性名 = '值'(要先获取元素element才能使用)

image.png

表单元素的属性操作

element.innerHTML 只适用于普通的标签;要修改表单里面的文字属性,要使用input.value

其他属性:type, checked, selected, disabled

image.png

两个表单事件

●   获得焦点input.onfocus

●   失去焦点input.onblur

DOM 操作样式属性(大小,颜色,位置)

element.style 行内样式操作,通常在样式较少、功能简单的情况下使用(如element.style.backgroundColor = 'pink';)

产生的是行内样式,权重比较高(通过在页面检查元素可以发现在标签内部生成了行内样式)

element.className 类名样式操作,适合于样式较多、功能复杂的情况

●   1.先在css中通过类选择器声明好样式,但是元素并不调用

●   2.在js中通过事件设置element.className = '类名',使元素引用声明好的类选择器下的样式

●   通过在页面检查元素可发现在标签内部更改了类名,并且会覆盖掉标签原有的类名;若想保留原有的类名,可以设置为element.className = '原类名  新类名'

●   注意:js里面的样式设置要用驼峰命名法,如backgroundColor, fontSize

排他思想算法

有同一组元素,我想要其中某一个元素通过事件实现某种样式,就要用到排他思想

●   1.所有元素清除样式(干掉其他人)(常用for循环)

●   2.给目标元素设置样式(留下我自己)

自定义属性

获取自定义属性值-->element.getAttribute('属性名')

●   我们自己添加的属性就是自定义属性

设置属性值

●   element.属性名 = '值'

●   该方法不能获取自定义属性

●   element.setAttribute(' 属性' , '值')

●   该用法主要针对自定义属性

●   在设置类名时要区别开

●   element.className = ' ';

●   element.setAttribute('class' , '属性名')

●   移除自定义属性

●   element.removeAttribute(' 属性')

自定义属性目的:为了保存并使用数据;有些数据可以保存到页面而不需要保存到数据库

H5新增

●   H5 规定,自定义属性要以data-开头为属性名并且赋值

●   H5新增的获取自定义属性的方法

●   element.dataset.属性名,或者element.dataset['属性值'] (ie11才支持)

●   dataset是一个集合,会获得所有以data-开头的自定义属性 (只能获得以data-开头的自定义属性)

●   注意:

●   当自定义属性为data-属性名时,则可以直接用element.dataset.属性名获取

●   当自定义属性的名字很长,由多个横杠连接如:data-list-name时,则要用驼峰命名法来获取--> element.dataset.listName