<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body{
height:1000px;
}
#ccc{
width:200px;
height:200px;
margin:100px;
margin-top:500px;
background-color:orange;
}
</style>
</head>
<body>
<input type="button" id="box" value="点击按钮">
<input type="button" id="dddd" value="按钮dddd">
<input type="button" id="yyy" value="按钮yyy">
<div id="ccc"></div>
<script>
//获取元素
var box = document.getElementById("box");
var dddd = document.getElementById("dddd");
var yyy = document.getElementById("yyy");
var ccc = document.getElementById("ccc");
box.onclick = function(e){
//e指的就是存储事件对象的参数,只要事件被触发,e就会自动接收数据
//兼容写法
e = e || window.event;
//e.eventPhase 判断出事件执行时处于哪个阶段
//1.捕获阶段
//2.目标阶段
//3.冒泡阶段
console.log(e.eventPhase);
//返回了2
//获取真正触发事件的元素
//兼容写法
var target = e.target || e.srcElement;
console.log(target);
//返回了 id为box的按钮元素
//获取绑定事件的事件源元素
console.log(e.currentTarget);
//返回最外端元素
//this指向box
console.log(this);
};
//e.type 属性获取事件类型
dddd.onclick = function(e){
//兼容写法
e = e || window.event;
//触发的事件
console.log(e.type);
//返回了click
};
//更多时候可能给同一个元素对象添加不同的事件类型,对应执行的事件函数内部的代码 不同
//鼠标移到按钮上背景色变为蓝色,移出按钮时变为绿色
/*
yyy.onmouseover = function(){
yyy.style.backgroundColor = "skyblue";
};
yyy.onmouseout = function(){
yyy.style.backgroundColor = "yellowgreen";
};
*/
//可以将所有给一个元素绑定的事件的事件函数写在一个函数内,通过 函数内部的e.type 判断走不同的分支
//避免添加多个函数,占用更多的内存
yyy.onmouseover = fn;
yyy.onmouseout = fn;
//避免添加多个函数,占用更多的内存
function fn(e){
e = e || window.event;
//根据事件类型,执行不同的代码
switch(e.type){
case "mouseover":
yyy.style.backgroundColor = "pink";
break;
case "mouseout":
yyy.style.backgroundColor = "yellowgreen";
break;
}
};
//事件对象中有一些获取尺寸的属性
ccc.onclick = function(e){
//client系列:客户端尺寸,点击的点参考浏览器窗口左上角的距离
console.log("距离浏览器:"+e.clientX);
console.log("距离浏览器:"+e.clientY);
//page 系列:html 页面尺寸,点击的点参考html文档左上角的距离
console.log("距离html文档:"+e.pageX);
console.log("距离html文档:"+e.pageY);
};
</script>
</body>
</html>