click:单机事件
dblclick:双击事件
mousedown:鼠标按下时触发
mouseup:鼠标抬起是触发
mouseenter:鼠标移入触发
mouseleave:鼠标离开触发
mousemove:鼠标移动
var btn = document.querySelector(".btn");
btn.addEventListener("click",function(){
console.log("我是单击事件");
})
btn.addEventListener("mousedown",function(){
console.log("鼠标按下");
})
btn.addEventListener("mouseup",function(){
console.log("鼠标抬起来的时候触发");
})
mouseover,mouseout;事件冒泡过程
mouseenter,mouseleave;不遵循事件冒泡过程
btn.addEventListener("mouseenter",function(){
console.log("鼠标移入");
})
btn.addEventListener("mouseleave",function(){
console.log("鼠标离开");
})
btn.addEventListener("mouseover",function(){
console.log("mouseover鼠标移入");
})
btn.addEventListener("mouseout",function(){
console.log("mouseout鼠标离开");
})
事件冒泡(所以主流浏览器的默认事件触发过程,都为事件冒泡过程)
先触发子元素在触发父元素(事件会进行传递)
var test=document.querySelector(".test");
var one=document.querySelector(".one");
test.addEventListener("click",function(){
alert("我是父元素test");
})
one.addEventListener("click",function(){
alert("我是子元素one");
})
btn.addEventListener("mousemove",function(){
console.log("我是在btn按钮里面移动");
})
document.addEventListener("contextmenu",function(){
console.log("按下鼠标右键");
})
document.addEventListener("keyup",function(){
console.log("键盘被抬起了");
})
document.addEventListener("keydown",function(){
console.log("键盘被按下了");
})
document.addEventListener("keypress",function(){
console.log("键盘被按下后抬起了");
})
浏览器默认的事件传递过程是事件冒泡过程
事件冒泡:当给两个父子元素同时添加一个点击事件时,当点击子元素的时候,同时会触发父元素的点击事件
触发过程是:先触发子元素的点击事件再触发父元素的点击事件,
这个触发过程叫,冒泡过程。
事件捕获:事件传递过程和事件冒泡相反,先触发父元素的事件再触发子元素的事件
事件对象:就是当用在对网页操作的时候发生的事情,比如点击事件。。。。。
事件对象会以回调函数的第一参数形式传入给我们
1、他是一个对象
2、在事件发生的过程产生
3、以回调函数的参数形式获取
<div class="web">
<div class="one">div>
<input type="text" class="user" id="" value="" />
<textarea name="" rows="" cols="" maxlength="140" >textarea>
<form action="" method="post">
<input type="text" value="测试" />
<input type="reset" value="重置"/>
form>
<div class="test">div>
div>
var web = document.querySelector(".web");
var one = document.querySelector(".one");
web.addEventListener("mouseenter", function() {
console.log("我是父元素");
})
one.addEventListener("mouseenter", function() {
console.log("我是子元素");
})
document.addEventListener("keydown", function(e) {
// console.log("键盘按下了");
// console.log(event);
if(e.key == "A") {
console.log("你按下大写的A");
}
if(e.keyCode == 37) {
console.log("你按下左键");
}
// if(e.keyCode == 38){
// console.log("你按下上键");
// }
if(e.keyCode == 39) {
console.log("你按下右键");
}
if(e.keyCode == 40) {
console.log("你按下下键");
}
})
键盘事件不能够监听到某个具体元素
var isclick = true;
var conut = 0;
var w = 100;
//不能够通过style方法获取元素的属性值
//console.log(one.style.width);
var div = document.createElement("div");
one.appendChild(div);
div.style="width:30px;height:13px;border-radius:5px;background:pink;transition:2s;position:absolute;right:0;";
//通过获取元素one,在对元素进行移动的效果
one.addEventListener("click", function() {
document.addEventListener("keydown", function(e) {
if(e.keyCode == 37) {
//transform能够通过+=来叠加位置,因为他可以传入多个参数
//one.style.transform += "translateX(-30px)";
//conut++;
//width不能够通过加等于来叠加宽度,因为width只能有一个参数
//one.style.width +="20px";
w+=10;
one.style.width=w+"px";
}
if(e.keyCode == 38) {
one.style.transform += "translateY(-30px)";
}
if(e.keyCode == 39) {
one.style.transform += "translateX(30px)";
}
if(e.keyCode == 40) {
one.style.transform += "translateY(30px)";
}
if(e.keyCode==13){
div.style.right="-500px";
div.style.opacity="0";
}
})
})
window.addEventListener("resize",function(){
console.log("浏览器窗口大小改变叫了");
})
window.addEventListener("scroll",function(){
console.log(window.pageYOffset);
})
document.body.addEventListener("unload",function(){
localStorage.setItem("页面关闭");
})
blur:失去焦点时候触发
focus:获取焦点时触发
change:当表单元素内容改变的时(回车或失去焦点时)触发的
input:当表单元素内容发生时触发
select:选中文本时触发
var inp=document.querySelector(".user");
inp.addEventListener("blur",function(){
var res= confirm("填写完成了吗?");
if(res==false){
setTimeout(function(){
inp.focus();
},1000)
}else{
inp.blur();
}
})
inp.addEventListener("focus",function(){
console.log("获取焦点");
})
inp.addEventListener("change",function(){
console.log(inp.value);
})
inp.addEventListener("input",function(){
console.log(inp.value);
})
reset:当用户点击重置按钮时触发
注意:我们需要监听form
var btn = document.querySelector("form");
btn.addEventListener("reset",function(){
console.log(123);
})
inp.addEventListener("select",function(){
console.log("你选中了文本");
})
#剪贴板事件
copy:当用户复制内容的时候触发
cut:当用户剪切内容的时候触发
paste:当用户粘贴内容的时候触发
inp.addEventListener("copy",function(){
alert("请不要复制");
})
var Click = true;
one.addEventListener("click",function(){
if(Click){
one.style.transform+="translateX(20px)";
Click=false;
}
one.addEventListener("transitionend",function(){
Click = true;
})
})
1、addEventListener()
可以注册多个事件监听
可以传入第三个参数,用来设置事件的传递方法,值为true,则为捕获;为false(默认值),则为冒泡过程
2、on~比如单击onclick
只能注册一个相同类型的事件监听
后面的点击事件监听会覆盖掉前面的点击事件监听
<div class="test1">
<div class="one">div>
div>
<div class="test2">
<div class="one">div>
div>
var test1 = document.querySelector(".test1");
var test2 = document.querySelector(".test2");
var one1 = test1.querySelector(".one");
var one2 = test2.querySelector(".one");
test1.onclick=function(){
console.log("我是通过onclick来点击的");
}
test1.onclick=function(e){
console.log(e)
console.log("我是通过onclick来第二次点击的");
}
one1.onclick=function(e){
//阻止事件冒泡
e.stopPropagation();
console.log("我是test1的儿子");
}
test2.addEventListener("click",function(e){
console.log(e)
console.log("我是通过addEventListener来点击的");
},true)
test2.addEventListener("click",function(){
console.log("我是通过addEventListener来第二次点击的");
},true)
one2.addEventListener("click",function(e){
//阻止事件冒泡
e.stopPropagation();
console.log("我是test2的儿子");
},true)
document.addEventListener("contextmenu",function(e){
//阻止默认事件
e.preventDefault()
console.log(123);
})