初始化触发点击事件_dom自定义事件

为什么要给dom添加自定义事件,有两点用处:1.方便统一操作此dom,给其加上自定义方法,更灵活地处理实际业务;仅需要document.getElementById('id').dispatch(evt),就可以进入自定义方法,根据实际业务进行逻辑处理;2.方便父节点知晓子节点自定义方法是否被触发,一旦触发,父节点可以根据实际情况作出相应逻辑处理,若需要往上通知父节点子节点的方法是否被触发,仅需在初始化事件的时候将冒泡参数配置为true。具体方法分三步走:

第一步:创建事件

var evt = document.createEvent('HTMLEvents')

第二步:初始化事件

evt.initEvent('defaultext', true, true)

第三步:触发事件

let dom = document.getElementById("username")

dom.dispatchEvent(evt)

方法及参数解释:

createEvent(param):param分别有:HTMLEvents、MouseEvents、UIEvents。

initEvent(eventName, canBubble, preventDefault):分别表示事件名称,是否可以冒泡,是否阻止事件的默认操作。

实例:通过点击【测试】按钮,给用户名和密码都赋值,同时给用户名的父节点背景色设置为白色。

ba3b297fd377bcf9c99ab52e8c154542.png

f0b406962389de33042cbf7a4894a6f0.png

function login_confirm() { 

    init()      

    let dom1 = document.getElementById("username")

    dom1.dispatchEvent(evt)

    let dom2 = document.getElementById("pwd")

    dom2.dispatchEvent(evt)

}

function init() {

    //创建   

    let dom = document.getElementById("username")  

    dom.addEventListener('defaultext', function () {

        this.value = '123456'

        console.log('用户名')

    })

    let ddd = document.getElementById('namecontainer')

    ddd.addEventListener('defaultext', function () {

        this.style="background-color:white"

        console.log('用户名容器')

    })

    let dom2 = document.getElementById("pwd")

    dom2.addEventListener('defaultext', function () {

        this.value = 'mima'

        console.log('密码')

    })

    document.addEventListener('defaultext', function () {

        //this.value = '123456'

        console.log('全局')

    }) 

点击【测试】,打印和页面显示

8d4b248a5a59b332c1a60e5a231bb196.png

81d8558d6b4253759bf4124a4ad0bdeb.png

由于我配置的是冒泡为true,并且父节点配置了监听这个自定义方法,因此执行了修改背景色的代码。

刚刚学做个笔记,以应用为主去了解,有说的不严谨的地方欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值