事件、事件源、元素相关操作

事件:就是用户在网页中的行为

分为三个部分:

标签触发行为,标签 - 事件源

触发的行为的类型 - 事件类型

执行的程序 - 函数

语法:事件源.on事件类型 - 函数

1、鼠标:

单击:click

双击:dbclick

移入:mouseover

移出:mouseout

2、键盘:

按下键盘:keydown

抬起键盘:keyup

3、表单事件:

获取焦点:focus

失去焦点:blur

下拉框选项改变:change

表单提交:submit

4、window

window.onload

window.onscroll

window.onresize

一、事件(后)

1、右键点击:contextmenu

2、鼠标按下:mousedown

3、鼠标抬起:mouseup

4、鼠标移动:mousemove

5、鼠标移入:mouseenter

6、鼠标移出:mouseleave

当父子两个盒子都有相同类型的事件,触发子标签的事件,就相当于会再次触发父标签的事件 - mouseover/mouseout

mouseenter/mouseleave触发子标签事件的时候,与父标签无关

注:使用移入移出事件的时候,mouseover对样mouseout,mouseenter对应mouseleave,不可混用

7、滚轮事件:mousewheel - 当滚动了滚轮就会执行的事件

8、按键盘:keypress

document.onkeypress = function() { console.log("按下了键盘") }

9、文本框内容发生改变的事件:input

二、事件流:事件从触发到执行结束的整个过程

分为三个阶段

1、捕获阶段:执行事件函数,就需要先找到事件源,找时间源的过程(由外而内,一层一层向里面找事件源的过程)

2、目标阶段:执行对应的事件函数

找到事件源,执行他的事件对应的函数

3、冒泡阶段

有进来的 过程就会有出去的过程 - 离开事件源,由内向外出去的过程

如果父标签/祖宗标签 跟自己有同类型的事件,当触发自己的事件后,在自己事件流的冒泡阶段会执行父标签/祖宗标签的事件

<body>     <div class="big">         <div class="mid">             <div class="small"></div>         </div>     </div> </body> <script>     var small = document.querySelector('.small')     small.onclick = function() {         console.log("小")     }     var mid = document.querySelector('.mid')     mid.onclick = function() {         console.log("中")     }     var big = document.querySelector('.big')     big.onclick = function() {         console.log("大")     } </script>

三、事件的绑定方式

addEventListener()

语法:标签对象.addEventListener(事件类型,事件函数)

同类型事件能绑定多次

<body>     <button>按钮</button> </body> <script>     var btn = document.querySelector('button')     btn.addEventListener('click',function() {         console.log("第一次点击")     })     btn.addEventListener('click',function() {         console.log("第二次点击")     }) </script>

在低版本的ie中,标签对象.attachEvent(on类型,函数)

<body>     <button>按钮</button> </body> <script>     var btn = document.querySelector('button')     btn.attachEvent('onclick',function() {         console.log("第一次点击")     })     btn.attachEvent('onclick',function() {         console.log("第二次点击")     }) </script>

兼容的绑定方式:

<body>     <button>按钮</button> </body> <script>     var btn = document.querySelector('button') function bindEvent(ele,type,handler){         if(ele.addEventListener){             ele.addEventListener(type,handler)         } else if(ele.attachEvent){             ele.attachEvent('on' + type,handler)         } else {             ele['on' + type] = handler         }     }     bindEvent(btn,'click',function() {         console.log("第一次点击")     })     bindEvent(btn,'click',function() {         console.log("第二次点击")     }) </script>

四、元素大小

js提供了获取元素大小的属性,获取到的是数字,直接就可以计算

clientWidth、clientHeight不包含边框的大小

offsetWidth、offsetHeight包含边框的大小

五、元素位置

offsetLeft、offsetTop 获取到相对于设置郭定位的父元素或祖宗元素的位置

六、浏览器的大小:

clientWidth、clientHeight,获取到不包含滚动条的大小(滚动条17px)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值