初学js Day08

目录

一.DOM事件

二.事件对象

三.事件

事件分为单击事件、鼠标事件、键盘事件、窗口事件、表单事件

1.单击事件

2.鼠标事件

3.键盘事件

4.窗口事件

5.表单事件

四.注册事件处理程序

五.事件冒泡

六.循环绑定事件

七.事件委托

八.元素的属性

1.元素的offset属性

2.元素的client属性

3.元素的scroll属性

4.window的坐标属性


一.DOM事件

时间三要素:

1.事件源(给谁绑定事件)

2.事件类型(绑定一个什么事件)

3.事件处理程序(绑定事件后要干什么)

二.事件对象

事件对象即 event

btn.onclick = function (e) {
console.log("点我干啥");
console.log(e);
属性
事件的触发者
console.log(e.target);
}

var link = document.getElementsByTagName("a")[0];
link.onclick = function (e) {
console.log("点击a标签");
阻止默认事件
e.preventDefault();
}

三.事件

事件分为单击事件、鼠标事件、键盘事件、窗口事件、表单事件
1.单击事件

单击事件即单击某个按钮触发的事件叫做单击事件

var btn = document.getElementsByTagName("button")[0];
btn.onclick = function (e) {
console.log("点我干啥");
}
2.鼠标事件

鼠标刚进入(onmouseover)

鼠标完全进入(onmouseenter)

鼠标刚要离开(onmouseout)

鼠标完全离开(onmouseleave)

鼠标移动(onmousemove)

鼠标按下(onmousedown)

鼠标弹起(onmouseup)

鼠标双击(ondblclick)

鼠标滚轮滚动(onmousewheel)

3.键盘事件

键盘按下(onkeydown)

键盘按着不放(onkeypress)

键盘弹起(onkeyup)

4.窗口事件

资源加载完毕(onload)

窗口大小改变(onresize)

关闭窗口(onunload)

5.表单事件

内容改变事件(onchange)

获取焦点(onfocus)

失去焦点(onblur)

输入事件(oninput)

提交事件(onsubmit)

重置事件(onrest)

四.注册事件处理程序

        var box = document.getElementsByClassName("box")[0];
        // 1. on 事件
        // box.onclick = function () {
        //     console.log("on 事件");
        // }

        // box.onclick = function () {
        //     console.log("第二个事件");
        // }

        // 2.addEventListener()
        box.addEventListener("click", function () {
            console.log("事件1");
        });

        box.addEventListener("click", function () {
            console.log("事件2");
        });

五.事件冒泡

事件传递过程

事件捕获

目标阶段(事件执行)

事件冒泡:当为多个嵌套的元素设置了相同的事件处理程序,它们将触发事件冒泡机制。

在事件冒泡中,最外部的元素将首先触发其事件,然后是栈内的下一个元素触发该事件,以此类推直到到达最外面的元素,如果把事件处理程序指定给所有的元素,那么这些事件将依次触发

阻止事件冒泡

        var father = document.getElementsByClassName("father")[0];
        var son1 = document.getElementsByClassName("son1")[0];
        var son2 = document.getElementsByClassName("son2")[0];

        father.onmouseover = function (e) {
             console.log("进入" + e.target.className);
         }

        father.onclick = function () {
            console.log(this);
        }

        son1.onclick = function (e) {
            console.log(this);
            // 阻止事件冒泡
            e.stopPropagation();
        }

        son2.onclick = function (e) {
            console.log(this);
            // e.stopPropagation();

        }

六.循环绑定事件

循环绑定事件属于异步操作

七.事件委托

事件委托即将原本绑定在子元素身上的事件,现在绑定到父元素身上,利用事件冒泡机制和事件对象,触发当前事件

var nav = document.getElementsByClassName("nav")[0];
nav.onclick = function (e) {
      // 事件的触发者
      // console.log(e.target)
    e.target.style.backgroundColor = "pink";
}

八.元素的属性

1.元素的offset属性

元素相对于父元素上边的偏移(offsetTop)

元素相当于父元素左边的偏移(offsetLeft)

自身包括padding、边框、内容去的宽度(offsetWidth)

自身包括padding、边框、内容去的高度(offsetHeight)

2.元素的client属性

内容可视区域的高(clientWidth)

内容可视区域的宽(clientHeight)

边框的厚度(clientLeft、clientTop)

3.元素的scroll属性

被卷去的上侧距离(scrollTop)

被卷去的左侧距离(scrollLeft)

4.window的坐标属性

窗口的内部宽度(innerWidth、innerHeight)

窗口显示区左上角的Y位置(pageYOffset、screen.width)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值