You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript鼠标悬停元素缩放功能失效,求助代码修改方案

问题修复方案

你的代码存在三个关键问题,逐一修正后就能正常实现悬停放大的功能:

1. HTMLCollection 无法直接调用 forEach

document.getElementsByClassName() 返回的是HTMLCollection(类数组对象),不是标准数组,不能直接使用 forEach 遍历。需要先把它转换成数组:

// 方法1:用Array.from转换
let first = Array.from(document.getElementsByClassName('contact'));
// 方法2:用展开运算符
let first = [...document.getElementsByClassName('contact')];

2. 事件处理函数的参数误用

bigger 和 normal 函数里的 event 是事件对象,不是触发事件的DOM元素。要修改元素样式,得通过 event.target 获取目标元素:

let bigger = function (event) {
  event.target.style.maxHeight = "10rem";
}

let normal = function (event) {
  event.target.style.maxHeight = "8rem";
}

3. 转义引号语法错误

原代码里的 " 是HTML转义字符,在JavaScript中要替换成正常的双引号 ",否则会导致语法报错。

修复后的完整代码

let first = Array.from(document.getElementsByClassName('contact'));

let bigger = function (event) {
  event.target.style.maxHeight = "10rem";
}

let normal = function (event) {
  event.target.style.maxHeight = "8rem";
}

let changeSize = function(button) {
  button.addEventListener('mouseover', bigger);
  button.addEventListener('mouseout', normal);
}

first.forEach(changeSize);

额外优化建议

其实用CSS的:hover伪类就能实现这个效果,比JavaScript更简洁高效,还能添加平滑过渡动画:

.contact {
  max-height: 8rem;
  transition: max-height 0.3s ease; /* 悬停过渡更自然 */
}

.contact:hover {
  max-height: 10rem;
}

内容的提问来源于stack exchange,提问作者Philip Curtis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:25:02