虽然我不知道你是看哪里的文档这么说的,但我可以明确地告诉你,事件函数里用 this 获取到的就是事件函数所处的那个对象,除非你是在事件函数上在接收到的事件对象上获取它的原始触发对象而且事件对象的传播只会在页面DOM树上发生。
要么就是你理解错了别人的意思
“通过触发事件的元素可以获取到的他的子元素” 而不是 “获取触发事件的对象可能获取到的他的子元素”。
也就是:
页面:
<div></div> ==$0
javascript:
$0.onclick=function(event){console.log(this , event)}
【点击<div></div>】
控制台:
this:只可能是 <div></div>
event.srcElement:事件的原始触发者
关于事件的传播,页面上的元素会发生事件传播,如果元素触发了事件,元素的事件会顺着父元素一直穿到最外层(这个现象称为冒泡),如果你在一个元素的父元素上绑定了事件监听器,那么如果元素触发了事件,元素的父元素对应的事件监听器会因为事件冒泡而被触发。
如果你要接收事件的元素的父元素上没有绑定相同事件的监听器,那么你大可不必理会,如果有,而你又不想父元素进行响应,那么你应该学习阻止事件冒泡。
所以你要在事件函数里获取元素的 id 那就是 this.id 啊,你要用事件函数的思维去思考,而不是用脚本首次执行时的思维。