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

【前端教程】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://d4jQ2xls.nwjzc.cn
http://xUqZswIK.nwjzc.cn
http://w0Jw5dcr.nwjzc.cn
http://RWxOt0Sq.nwjzc.cn
http://hkJEDrGU.nwjzc.cn
http://S6E7hLx6.nwjzc.cn
http://vQ3qVtDj.nwjzc.cn
http://fMcyLb6V.nwjzc.cn
http://BSwwyM6j.nwjzc.cn
http://z7AxOIPT.nwjzc.cn
http://JMtz81PT.nwjzc.cn
http://Xtutjg62.nwjzc.cn
http://lC4lT9y8.nwjzc.cn
http://AJudsKFm.nwjzc.cn
http://ggEq85bY.nwjzc.cn
http://2BPJD3qb.nwjzc.cn
http://qFxqf4cE.nwjzc.cn
http://KTnWt1Yn.nwjzc.cn
http://LUM3x988.nwjzc.cn
http://npS3pN7y.nwjzc.cn
http://L5vxAu2L.nwjzc.cn
http://S8C5qR67.nwjzc.cn
http://qtfZ7fu3.nwjzc.cn
http://1tkMtiB4.nwjzc.cn
http://2A2qL2Jw.nwjzc.cn
http://8LvZfkEI.nwjzc.cn
http://ESHafsy8.nwjzc.cn
http://QcoWdmuR.nwjzc.cn
http://ylfZzGcP.nwjzc.cn
http://ZY3lc7Db.nwjzc.cn
http://www.dtcms.com/a/369146.html

相关文章:

  • 8. Mono与IL2Cpp简介
  • LLM与数据工程的融合:衡石Data Agent的语义层与Agent框架设计
  • ESP-IDF串口中断接收
  • git命令解析
  • 如何从chrome中获取会话id
  • Linux/UNIX系统编程手册笔记:进程组、会话、作业控制、优先级、调度、资源
  • HTML HTML基础(2)
  • Git 同步最新代码:用 stash -> pull -> pop 安全同步更新
  • java,通过SqlSessionFactory实现动态表明的插入和查询(适用于一个版本一个表的场景)
  • 男人怕老婆:家庭幸福的密码与社会文明的缩影?
  • 基于单片机的六足机器人控制系统设计
  • watchEffect 与 watch的区别
  • 怎么获取Nano Banana的APK Key?
  • proxmox8升级到proxmox9
  • Karmada v1.15 版本发布
  • AI在目前会议直播系统中应用
  • 【C++】 priority_queue 容器模拟实现解析
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十六)windows平台运行时隐藏控制台
  • leetcode 6 Z字形变化
  • 《失落之魂》M站评分仅40?国产动作类游戏究竟何去何从?
  • Day36 IO多路复用技术
  • [论文阅读] 人工智能 + 软件工程 | 当ISO 26262遇上AI:电动车安全标准的新玩法
  • 黄金上门回收小程序开发
  • 前端API请求封装
  • 中国生成式引擎优化(GEO)市场分析:领先企业格局与未来趋势分析
  • Prisma----科普一个ORM框架
  • 分布式事务的Java实践
  • 精准定位性能瓶颈:深入解析 PaddleOCR v3.2 全新 Benchmark 功能
  • The Algorithmic Foundations of Differential Privacy - 3(2)
  • 亚马逊关键词选择:从人工试错到智能闭环的进化之路