14.DOM(文档对象模型)-dom事件

目录

一、什么是事件?

1. 事件的组成

2. 执行事件的步骤

二、操作元素-改变元素内容

1. innerText

2. innerHTML

3. 相同点和不同点

三、操作元素-改变元素属性

四、操作元素-表单元素属性

1. 利用DOM可以修改如下表单元素的属性:

2. 应用小案例-密码显示和隐藏

五、操作元素-修改样式

1. element.style  行内样式操作  适用于修改样式比较少的时候使用

2. element.className  类名样式操作,适用修改样式多的时候使用

六、注册和删除事件

1. 注册事件

1)传统注册方式

2) 方法监听注册方式

3) IE9之前:attachEvent(type, listener)  很少使用,了解

2. 删除事件

1)传统注册事件解绑

2) 事件监听方式解绑

3) IE9之前老版本浏览器解绑


一、什么是事件?

事件是触发响应的一种机制。

1. 事件的组成

事件有三部分组成:事件源事件类型事件处理程序  ,也称为事件三要素。

例子:

1)事件源:事件被触发的对象  button

        var btn = document.querySelector('button');

2) 事件类型  如何触发 ,什么事件  比如:点击事件、鼠标经过、还是键盘按下

        btn.onclick = function() { }

3)事件处理程序   通过一个函数赋值的方式

        btn.onclick = function() {

            alert('点秋香');

        }

2. 执行事件的步骤

1)获取事件源

var div = document.querySelector('div');

2)注册事件(绑定事件)

 div.onlick

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

  div.onclick = function() {

            console.log('我被选中了');

        }


二、操作元素-改变元素内容

1. innerText

不识别html标签 非标准,而且会去除换行和空格

        var d = document.getElementById('d');

        d.innerText = '<strong>今天是</strong>2022年';

2. innerHTML

识别html标签 是w3c标准 会保留空格和换行

        d.innerHTML = '<strong>今天是</strong>2022年';

3. 相同点和不同点

不同点是:innerText不识别html标签 非标准,而且会去除换行和空格;inner HTML识别html标签 是w3c标准 会保留空格和换行

相同点是:都是可读写的

        var p = document.getElementById('p');

        console.log(p.innerText);

        console.log(p.innerHTML);


三、操作元素-改变元素属性

src、href、title等,以src和title举例

// 1、 获取事件源

        var ldh = document.getElementById('ldh');

        var zxy = document.getElementById('zxy');

        var img = document.querySelector('img');

        // 2、注册事件

        zxy.onclick = function() {

            img.src = 'images/img.jpg';

            img.title = '张学友';

        }

        ldh.onclick = function() {

            img.src = 'images/ldh.jpeg';

            img.title = '刘德华';

        }


四、操作元素-表单元素属性

1. 利用DOM可以修改如下表单元素的属性:

type、value、checked、selected、disabled、

        var btn = document.querySelector('button');

        var inp = document.querySelector('input');

        btn.onclick = function() {

            inp.value = "你笑什么笑";

如果想让某个表单被禁用,不能被点击,可以使用disabled

            // btn.disabled = true;

this指向是的事件函数的调用者 btn

            this.disabled = true;

        }

2. 应用小案例-密码显示和隐藏

  var inp = document.querySelector('input');

  var lab = document.querySelector('label');

  var img = document.querySelector('img');

算法:利用一个flag变量,来判断flag的值,如果是0就切换为文本框,flag赋值为1,如果是1就切换为密码框,flag设置为0

        var flag = 0;

        lab.onclick = function() {

            if (flag == 0) {

                inp.type = 'text';

                img.src = 'images/mi-logo.png';

                flag = 1;

            } else {

                inp.type = 'password';

                img.src = 'images/mi-home.png';

                flag = 0;

            }

        }


五、操作元素-修改样式

样式属性操作:可以通过js来修改大小、颜色、位置等样式

1. element.style  行内样式操作  适用于修改样式比较少的时候使用

        var div = document.querySelector('div');

        div.onclick = function() {

            div.style.backgroundColor = 'blue';

            div.style.width = '400px';

        }

2. element.className  类名样式操作,适用修改样式多的时候使用

className会直接覆盖之前的类名,如果要保留原来的类名,要在里面加上原先的类名

var p = document.querySelector('p');

        p.onclick = function() {

            p.className = 'change';

        }


六、注册和删除事件

1. 注册事件

1)传统注册方式

以on开头的,比如 onclick 

特点:注册事件的唯一性,同一个元素同一个事件只能设置一个处理函数

2) 方法监听注册方式

addEventListener(type, listener) 是一个方法,IE9之前不支持  特点:同一个元素同一个事件可以注册多个监听器

type:事件类型字符串,比如click 等,不要带on

3) IE9之前:attachEvent(type, listener)  很少使用,了解

type:事件类型字符串,带on

2. 删除事件

var divs = document.querySelectorAll('div');

1)传统注册事件解绑

        divs[0].onclick = function() {

                alert('1');

                divs[0].onclick = null;

            }

2) 事件监听方式解绑

        divs[1].addEventListener('click', fn);

        function fn() {

            alert('2');

            divs[1].removeEventListener('click', fn);

        }

3) IE9之前老版本浏览器解绑

        divs[2].attachEvent('onclick', fn1);

        function fn1() {

            alert('2');

            divs[2].detachEvent('onclick', fn1);

        }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_LiuP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值