当前位置: 首页 > java >正文

【前端教程】JavaScript 实现图片鼠标悬停切换效果与==和=的区别

图片鼠标悬停切换效果

功能说明

页面展示4张默认图片,当鼠标移动到任意一张图片上时,该图片会切换为对应的特定图片(诗、书、画、唱);当鼠标移出时,图片恢复为默认图片。

==和=的区别

在讲解案例前,先明确===的核心区别:

  • =:赋值运算符,用于给变量赋值(如x = 5表示将5赋值给变量x)
  • ==:比较运算符,用于判断两个值是否相等(如x == 5判断变量x的值是否等于5)

注意:在条件判断语句中(如if语句),必须使用==进行比较,若误用=会导致逻辑错误。

方法一实现(代码更简洁)

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>图片悬停切换效果</title><style>img {width: 200px;height: 300px;}</style><script>window.onload = function() {// 获取所有图片元素var imgShuZu = document.getElementsByTagName("img");// 为每个图片添加事件for(var i of imgShuZu) {// 鼠标移入事件i.onmouseover = function() {// 使用==进行条件判断,比较title属性值if(this.title == "11") {this.src = "img/1.jpg"; // 诗}if(this.title == "22") {this.src = "img/2.jpg"; // 书}if(this.title == "33") {this.src = "./img/3.jpg"; // 画}if(this.title == "44") {this.src = "./img/4.png"; // 唱}}// 鼠标移出事件i.onmouseout = function() {// 恢复默认图片this.src = "./img/三连.jpg";}}}</script>
</head>
<body><!-- 所有图片默认显示同一图片,通过title属性区分 --><img src="./img/三连.jpg" title="11" /><img src="./img/三连.jpg" title="22" /><img src="./img/三连.jpg" title="33" /><img src="./img/三连.jpg" title="44" />
</body>
</html>

方法二实现(逐个绑定事件)

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>图片悬停切换效果</title><style>img{width: 100px;height: 100px;}</style><script>window.onload = function() {// 获取所有图片元素var imgShuZu = document.getElementsByTagName("img");// 为第一张图片绑定事件imgShuZu[0].onmouseover = function() {this.src = "./img/1.jpg"; // 诗}imgShuZu[0].onmouseout = function() {this.src = "img/三连.jpg"; // 恢复默认}// 为第二张图片绑定事件imgShuZu[1].onmouseover = function() {this.src = "./img/2.jpg"; // 书}imgShuZu[1].onmouseout = function() {this.src = "img/三连.jpg";}// 为第三张图片绑定事件imgShuZu[2].onmouseover = function() {this.src = "./img/3.jpg"; // 画}imgShuZu[2].onmouseout = function() {this.src = "img/三连.jpg";}// 为第四张图片绑定事件imgShuZu[3].onmouseover = function() {this.src = "./img/4.png"; // 唱}imgShuZu[3].onmouseout = function() {this.src = "img/三连.jpg";}}</script>
</head>
<body><img src="img/三连.jpg"><img src="img/三连.jpg"><img src="img/三连.jpg"><img src="img/三连.jpg">
</body>
</html>

两种方法对比分析

方法优点缺点适用场景
方法一代码更简洁,可维护性好,扩展性强需要额外属性(title)区分图片图片数量较多时
方法二逻辑直观,无需额外属性代码冗余,图片数量多时维护困难图片数量较少时

关键技术点解析

  1. 事件绑定

    • 使用onmouseover事件监听鼠标移入
    • 使用onmouseout事件监听鼠标移出
    • 通过this关键字引用当前操作的图片元素
  2. 图片路径

    • img/1.jpg./img/1.jpg两种路径写法均可
    • ./表示当前目录,可省略
  3. 元素获取

    • 使用getElementsByTagName("img")获取所有图片元素,返回一个类数组对象
    • 可通过索引(如imgShuZu[0])访问单个图片
  4. 属性操作

    • 修改src属性切换图片
    • 利用title属性存储额外信息,用于区分不同图片

这个案例不仅展示了鼠标事件的应用,更重要的是演示了===的正确使用方法,以及循环在简化代码中的作用,是JavaScript DOM操作的基础实践。

http://www.xdnf.cn/news/20231.html

相关文章:

  • 寻找AI——初识3D建模AI
  • 中囯移动电视盒子(魔百和)B860AV2.1-A2和CM311-5-zg刷机手记
  • MacOS 通过Homebrew 安装nvm
  • 深度学习中的Zero-shot(零次学习)
  • 【Python基础】 18 Rust 与 Python print 函数完整对比笔记
  • 通过Gen AI SDK调用gemini 2.5 pro,单独上传pdf文件 | ai agent 开发笔记 2025.9.2 Day 2
  • 确保 SQL Server 备份安全有效的最佳实践
  • 【面试场景题】spring应用启动时出现内存溢出怎么排查
  • Nginx 高性能调优指南:从配置到原理
  • 用 Cursor AI 快速开发你的第一个编程小程序
  • Sentinel和Cluster,到底该怎么选?
  • 2025高教社数学建模国赛A题 - 烟幕干扰弹的投放策略(完整参考论文)
  • 【Tailwind, Daisyui】响应式表格 responsive table
  • 一文教您学会Ubuntu安装Pycharm
  • 管家婆分销ERP A/V系列导出提示加载数据过大的处理方式
  • 【Python基础】 17 Rust 与 Python 运算符对比学习笔记
  • k8s除了主server服务器可正常使用kubectl命令,其他节点不能使用原因,以及如何在其他k8s节点正常使用kubectl命令??
  • 人工智能机器学习——聚类
  • 2025 汽车租赁大会:九识智能以“租赁+运力”革新城市智能配送
  • 指定端口-SSH连接的目标(告别 22 端口暴力破解)
  • 结构体简介
  • window cmd 命令行中指定代理
  • 对于单链表相关经典算法题:203. 移除链表元素的解析
  • 数据结构:栈和队列力扣算法题
  • 空域属不属于自然资源?(GPT5)
  • Redis-事务与管道
  • 使用CI/CD部署后端项目(gin)
  • 因泰立科技:用激光雷达重塑智能工厂物流生态
  • 【网安基础】--ip地址与子网掩码
  • 告别线缆束缚!AirDroid Cast 多端投屏,让分享更自由