我正在查看下面的这个基本示例(它使 DOM 中的所有图像在鼠标悬停时都是半透明的),并且对任意函数(例如handleMouseOver
,如果您给它一个参数)如何接收事件对象感到困惑。
将这样一个函数分配给onmouseover
属性的行为如何告诉它以这种方式修改这个函数,因为函数定义本身没有任何内在的东西说:“请给我一个事件”?赋值运算符是否以某种方式重载?还是浏览器在这里做了一些额外的工作?我真的很感谢这个现象的详细解释的链接,因为将它视为纯 JavaScript 似乎没有任何意义(至少对我来说!)
function handleMouseOver(e) {
e.target.style.opacity = 0.5;
}
function handleMouseOut(e) {
e.target.style.opacity = 1;
}
var elements = document.getElementsByTagName("img");
for (var i = 0; i < elements.length; i++) {
elements[i].onmouseover = handleMouseOver;
elements[i].onmouseout = handleMouseOut;
}