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

JavaScript入门作业难题:悬停预览图时无法动态切换主区域背景图

JavaScript入门作业难题:悬停预览图时无法动态切换主区域背景图

嘿,你已经做得很棒了——能成功切换alt文本说明你已经正确获取到了悬停的图片元素,离搞定背景图只差一丢丢!

问题的核心其实很简单:你需要把当前悬停的预览图的图片地址(也就是它的src属性值)动态传入到主区域的backgroundImage里。

第一步:修改upDate函数

你已经拿到了作为参数传入的element(就是当前鼠标悬停的那个<img>标签),直接用element.src就能拿到它的图片地址,把这个值放到url()里就好啦:

function upDate(element) {
  // 切换alt文本(你原来的代码没问题)
  document.getElementById('image').innerHTML = element.alt;
  // 动态设置背景图:把当前预览图的src传入url
  document.getElementById('image').style.backgroundImage = `url(${element.src})`;
}

如果还没接触过模板字符串(就是用`包裹的写法),也可以用传统的字符串拼接:

document.getElementById('image').style.backgroundImage = 'url(' + element.src + ')';

第二步:完善unDo函数

现在鼠标离开预览图时,你只还原了文本,还需要把主区域的背景图也还原成初始状态。给unDo函数补上逻辑:

function unDo() {
  // 还原提示文本
  document.getElementById('image').innerHTML = 'Hover over an image to display the alt text.';
  // 清空背景图(还原成初始的空状态)
  document.getElementById('image').style.backgroundImage = 'url("")';
}

然后把HTML里的onmouseleave事件改成调用这个函数,不用重复写代码,更整洁:

<img class="preview" alt="Styling with a Bandana" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/389177/bacon.jpg" onmouseover="upDate(this)" onmouseleave="unDo();">
<img class="preview" alt="With My Boy" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/389177/bacon2.JPG" onmouseover="upDate(this)" onmouseleave="unDo();">
<img class="preview" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/389177/bacon3.jpg" alt="Young Puppy" onmouseover="upDate(this)" onmouseleave="unDo();">

为什么之前的写法不行?

你之前写的'url()'是空的,自然不会显示图片;而硬编码的话只能固定显示一张。用element.src就能动态获取当前悬停图片的地址,实现随鼠标切换的效果啦。

这样修改后,你就能同时实现文本和背景图的动态切换了,试试看!

备注:内容来源于stack exchange,提问作者Katerina Mala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:09:39