DOM事件

事件
事件三要素:
1、事件源:绑定事件的节点
2、事件处理函数:点击事件触发时,执行的代码(函数体)
3、事件类型:(单击;hover,move)
书写方式:
DOM1:不建议使用

// 获取要点击的元素
let divEle=document.querySelectorAll("div")[0];
// 点击并执行事件处理函数
divEle.onclick=function(){
  window.alert("结束")
}

// DOM1删除事件
divEle.οnclick="";

DOM2:事件监听器
创建事件监听器
书写格式:元素节点.addEventListener(事件类型,事件处理函数,
布尔值(事件流))
参数三:捕获型(true),冒泡型(false)

divEle.addEventListener("click", function () {
  window.alert("结束");
},false);//false为默认值

DOM2删除事件

//书写格式:元素节点.removeEventListener(“click”,事件处理函数名)

let uleEle = document.querySelector("ul");
let f70 = function () {
  console.log("f70");
  uleEle.removeEventListener("click", f70)
}
uleEle.addEventListener("click", f70)

DOM0与DOM2的区别:
DOM0的优缺点:
优点:兼容性好
缺点1:同一个事件类型只能绑定一个事件处理函数
缺点2.事件流(冒泡法(从里到外)

DOM2的优缺点:
缺点:兼容性不高
优点1:同一个事件类型只能绑定一个事件处理函数
优点2:事件流(冒泡法(从里到外),捕获法(从外到里) )

事件对象
事件对象:事件处理函数的参数
function (e) e就是事件对象 e.target 是触发事件的节点

let liEle = document.querySelectorAll("li");
for (let item of liEle) {
    item.addEventListener("click", function(e) {
        //提升兼容性
        let event = e || window.event;
        console.log(event.target);
    });
}

事件委托(事件代理)
减少事件监听的次数
适用场景:
1.多个子元素,绑定相同事件类型,执行同一个事件处理函数
2.子元素是动态的

let olEle=document.querySelector("ol");
olEle.addEventListener("click",function(e){
let event = e || window.event;
//指定li元素 需大写
    if(event.target.nodeName=="LI"){
        event.target.classList.toggle("box");
}
//指定p元素 需小写
    if(event.target.localName=="p"){
        event.target.classList.toggle("box2");
    }
})

表单对象

// 获取需要使用的节点
let bEle = document.querySelector("body");
let inpEle = document.querySelector("input");

焦点事件

inpEle.addEventListener("focus", function(e) {
    e.target.style.outline = "1px solid red";
    let newSpan = document.createElement("span");
    newSpan.innerText = "input your phone number!"
    bEle.appendChild(newSpan);
});

输入事件(只要输入就触发)

inpEle.addEventListener("input", function(e) {
    let str = e.target.value;
    console.log("A");
    let re = /3/;
    if (re.test(str)) {
        e.target.style.color = "red";
    }
});

失去焦点

inpEle.addEventListener("blur", function(e) {
    e.target.style.outline = "";
});

内容发生变化时(失去焦点后,判断内容是否发生变化)

inpEle.addEventListener("change", function() {
    console.log("F70");
});

键盘事件
键盘按下时触发的事件

let inputEle =document.querySelector("input");
// 键盘按下时触发的事件


document.addEventListener("keydown",function(e){
let event = e || window.event;
console.log("按下键盘"); 
 console.log(e.key);//识别键盘上被按的内容
// 做判断可做事情 例:判断e.key的按的内容是否是enter
})

键盘抬起时触发的事件

document.addEventListener("keyup",function(e){
 let event = e || window.event;
 console.log("键盘抬起");})

keypress只识别字符键(数字,字母,标点符号,回车)

document.addEventListener("keypress",function(e){
let event = e || window.event;
console.log("按键盘");})

鼠标事件
现获取需使用的元素(在哪个节点身上添加鼠标监听事件)
双击鼠标事件( dblclick )

arEle.addEventListener("dblclick",function(){
console.log("鼠标双击");})

鼠标移入,移出事件
1.mouseenter,mouseleave不会考虑子元素()
不考虑子元素:鼠标移入子元素,不会触发父元素的事件

arEle.addEventListener("mouseenter",function(){
console.log("鼠标移入");

 secEle.style.backgroundColor="yellow"
})
arEle.addEventListener("mouseleave",function(){
 console.log("鼠标移出");
 secEle.style.backgroundColor="green"
})
1. 

mouseover,mouseout会考虑子元素()

arEle.addEventListener("mouseover",function(){
console.log("鼠标移入");
 secEle.style.backgroundColor="yellow"
})
arEle.addEventListener("mouseout",function(){
console.log("鼠标移出");
 secEle.style.backgroundColor="green"
})

鼠标按下事件(mousedown)

arEle.addEventListener("mousedown",function(){

console.log("鼠标按下");

 secEle.style.backgroundColor="green";
})

鼠标抬起事件(mouseup)

arEle.addEventListener("mouseup",function(){
console.log("鼠标抬起");
secEle.style.backgroundColor="yellow";
})

鼠标移动事件(mousemove)

arEle.addEventListener("mousemove",function(e){
let event=e||window.event;
console.log(event.clientX,event.clientY);
// event.clientX://鼠标在浏览器水平位置
// event.clientY://鼠标在浏览器垂直位置
console.log("鼠标移动");
secEle.style.backgroundColor="yellow";
})

事件对象的方法(event)
1.
【阻止默认事件】 event.preventDefault( )

let aEle = document.getElementsByTagName("a")[0];
aEle.addEventListener("click", function(e) {
let event = e || window.event;
 // window.alert("a被点击了!!!");
 let state = window.confirm("ccc");
 if (!state) {
event.preventDefault();
  }
});

2.【阻止事件冒泡】event.stopPropagation( )冒泡型,点击后从外到里

arEle.addEventListener("click",function(){
console.log("article");

})
secEle.addEventListener("click",function(e){
 console.log("section");

 let event = e || window.event;
 event.stopPropagation();
})
pEle.addEventListener("click",function(e){
console.log("p");
let event = e || window.event;
 event.stopPropagation();
})

3.【阻止事件捕获】 event.stopImmediatePropagation( )

arEle.addEventListener("click", function (e) {
 console.log("article");

let event = e || window.event;
 event.stopImmediatePropagation();
}, true)
secEle.addEventListener("click", function (e) {
 console.log("section");
let event = e || window.event;
 event.stopImmediatePropagation();
}, true)
pEle.addEventListener("click", function (e) {
 console.log("p");
 let event = e || window.event;
event.stopImmediatePropagation();
}, true)

页面事件
1.
页面加载时触发(参考小广告刷新后向上)(load)

window.addEventListener("load",function(){
console.log(125);
});
1. 

页面滚动条事件(例如:页面下拉多少出现返回顶部)(scroll)

F70.style.display = "none";
window.addEventListener("scroll", function() {

 if (window.pageYOffset > 200) {

    F70.style.display = "block";

 } else {  F70.style.display = "none";   
    } 
});
1. 

页面尺寸发生变化触发事件 (resize)

window.addEventListener("resize", function() {
 console.log(window.innerHeight, window.innerWidth);});
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值