事件对象是什么?
也是个对象,这个对象里有事件触发时的相关信息
例如:鼠标点击事件中,事件对象就存了鼠标点在哪个位置等信息
如何获取?
在事件绑定的回调函数的第一个参数就是事件对象
一般命名为event、ev、e

typeclientX/clientYoffsetX/offsetYkey不提倡使用keyCode(已废弃)
img {
position: absolute;
top: 0;
left: 0;
}
img要用到绝对定位
<img src="./images/tianshi.gif" alt="">
<script>
let img = document.querySelector('img')
document.addEventListener('mousemove', function (e) {
// 不断得到当前的鼠标坐标
// 把坐标给图片(别忘了单位)
// img.style.left = '100px'
img.style.left = e.pageX - 50 + 'px'
img.style.top = e.pageY - 40 + 'px'
})

加上代码:
area.addEventListener('keyup', function (e) { //不要用keydown,键盘弹起的时候,再执行否则area里会接受enter字符,导致area.value=1
if (e.key == 'Enter') { //是enter键才行
send.click()
}
})

从DOM的根元素开始去执行对应的事件 (从外到里)
DOM.addEventListener(时间类型,事件处理函数,是否使用捕获机制)
addEventListener第三个参数传入true代表是捕获阶段触发(很少使用)false代表冒泡阶段触发,默认就是false当一个元素的事件被触发时,同样的事件将会在该元素的所有祖先元素中依次被触发。这一过程被称为事件冒泡
简单理解:当一个元素触发事件后,会依次向上调用所有父级元素的同名事件
事件冒泡是默认存在的
案例:
<script>
let fa = document.querySelector('.father')
let son = document.querySelector('.son')
son.addEventListener('click', function () {
alert('我是儿子')
})
fa.addEventListener('click', function () {
alert('我是爸爸')
})
</script>
点击儿子区域,依次弹出:我是儿子,我是爸爸(传入true,则相反)

因为默认就有冒泡模式的存在,所以容易导致事件影响到父级元素
事件对象.stopPropagation()
<script>
let fa = document.querySelector('.father')
let son = document.querySelector('.son')
fa.addEventListener('click', function () {
alert('我是爸爸')
})
son.addEventListener('click', function (e) {
alert('我是儿子')
e.stopPropagation()
})
</script>
点击儿子区域,只弹出:我是儿子。
mouseover 和 mouseout 会有冒泡效果
mouseenter 和 mouseleave 没有冒泡效果(推荐)
<script>
let fa = document.querySelector('.father')
let son = document.querySelector('.son')
fa.addEventListener('mouseover', function () {
console.log(111)
})
</script>
鼠标在父元素内,在父元素和子元素之间移动,会不断输出:111(改成mousenter就好了)

=null(比如btn.onclick=null),就可以实现事件的解绑addEventListener(事件类型, 事件处理函数, 是否使用捕获)removeEventListener(事件类型, 事件处理函数, 获取捕获或者冒泡阶段) btn.addEventListener('click', add)
function add() { //给函数起名字,匿名函数无法解绑
alert('第一次')
}
btn.removeEventListener('click', add)
事件委托是利用事件流的特征解决一些开发需求的知识技巧
总结:
事件对象.target 可以获得真正触发事件的元素 <ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
let ul = document.querySelector('ul')
ul.addEventListener('click', function (e) {
(e.target.style.color = 'red') //核心
})
</script>
