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

如何用JavaScript实现鼠标悬停文本时切换图片

实现文本链接悬停切换图片的方案

步骤1:调整HTML结构

给每个文本链接添加data-img属性存储对应悬停图的地址,同时给图片元素设置ID方便JS获取:

<div class="topics">
    <div class="links">
        <a href="#" data-img="topic1-hover.jpg"><p> Topic 1 </p></a>
        <a href="#" data-img="topic2-hover.jpg"><p> Topic 2 </p></a>
        <a href="#" data-img="topic3-hover.jpg"><p> Topic 3 </p></a>
    </div>
        
    <div class="image"> 
        <img id="main-img" src="default.jpg" alt="默认图片">
    </div>
</div>

步骤2:编写JavaScript逻辑

通过监听链接的mouseover和mouseout事件,实现图片切换与恢复:

// 获取核心元素并存储默认图片地址
const mainImg = document.getElementById('main-img');
const topicLinks = document.querySelectorAll('.links a');
const defaultImgSrc = mainImg.src;

// 给每个链接绑定事件
topicLinks.forEach(link => {
    // 鼠标悬停时切换到对应图片
    link.addEventListener('mouseover', () => {
        mainImg.src = link.dataset.img;
    });

    // 鼠标移开时恢复默认图片
    link.addEventListener('mouseout', () => {
        mainImg.src = defaultImgSrc;
    });
});

优化方案:事件委托(适配动态新增链接)

如果后续需要动态添加链接,用事件委托只需绑定一次事件,更高效:

const mainImg = document.getElementById('main-img');
const defaultImgSrc = mainImg.src;
const linksContainer = document.querySelector('.links');

// 父容器监听鼠标进入事件
linksContainer.addEventListener('mouseover', (e) => {
    const targetLink = e.target.closest('a');
    if (targetLink) {
        mainImg.src = targetLink.dataset.img;
    }
});

// 父容器监听鼠标离开事件
linksContainer.addEventListener('mouseout', (e) => {
    const targetLink = e.target.closest('a');
    if (targetLink) {
        mainImg.src = defaultImgSrc;
    }
});

关键说明

  • data-img是HTML5自定义数据属性,专门用来存储元素关联的额外数据,方便JS读取。
  • 事件委托利用事件冒泡特性,仅在父容器绑定事件就能处理所有子链接的交互,适合动态生成内容的场景。
  • 提前存储默认图片地址,避免每次鼠标移开时重复读取原地址,提升性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:40:06