第一种:普通方式

demo07.html

<html>
<head><link rel="stylesheet" href="css/demo05.css"><script type="text/javascript" src="js/demo07.js"></script>
</head>
<body><div id="div_container"><div id="div_fruit_list"><table id="tb1_fruit"><tr><th class="w20">名称</th><th class="w20">单价</th><th class="w20">数量</th><th class="w20">小计</th><th>操作</th></tr><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>苹果</td><td onmouseover="showHand()">5</td><td>20</td><td>100</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>西瓜</td><td onmouseover="showHand()">3</td><td>20</td><td>60</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>菠萝</td><td onmouseover="showHand()">4</td><td>25</td><td>100</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr onmouseover="showBGColor()" onmouseout="clearBGColor()"><td>榴莲</td><td onmouseover="showHand()">3</td><td>30</td><td>90</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr><td>总计</td><td colspan="4">999</td></tr></table></div></div>
</body>
</html>

demo05.css

body{margin:0;padding:0;background-color:#808080;
}
div{position:relative;float:left;
}
#div_container{width:80%;height:100%;border:0px solid blue;margin-left:10%;float:left;background-color:honeydew;/*设置边框轮廓为圆角*/border-radius:25px;
}
#div_fruit_list{width:100%;border:0px solid red;
}
#tbl_fruit{/*设置表格宽度:页面宽度的60%*/width:60%;/*设置每行单元格高度*/line-height:28px;/*设置表格和页面边框上方的距离*/margin-top:120px;/*设置表格和页面边框左边的距离*/margin-left:20%;
}
#tbl_fruit, #tbl_fruit tr,#tbl_fruit th,#tbl_fruit td{border:1px solid gray;/*单元格边界合并*/border-collapse:collapse;/*单元格文字居中*/text-align:center;/*设置单元格文字样式*/font-size:16px;font-family:"楷体";font-weight:lighter;color:threeddarkshadow;
}
.w20{width:20%;
}
.deleteImg{width:24px;height:24px;
}

demo07.js

//当鼠标悬浮时,显示背景颜色
function showBGColor(){//event:当前发生的事件//event.srcElement:事件源//alert(event.srcElement);//显示事件源的标签名:tr, td, th//alert(event.srcElement.tagName); //显示TDif(event && event.srcElement && event.srcElement.tagName == "TD") {//1、取选中的单元格var td = event.srcElement;//td.parentElement表示获取td的父元素 TR//2、取选中的单元格所在的单元行,并对此单元行进行操作var tr = td.parentElement;//如果想要通过js代码设置某节点的样式,则需要加上.style//3、设置了选中行的背景颜色tr.style.backgroundColor = "pink";//tr.cells表示获取这个tr中的所有的单元格var tds = tr.cells;//4、设置选中这行的单元格里的文字颜色for(var i = 0; i < tds.length; i++) {tds[i].style.color = "white";}}
}//当鼠标离开时,恢复原始样式
function clearBGColor(){if(event && event.srcElement && event.srcElement.tagName == "TD"){var td = event.srcElement;var tr = td.parentElement;tr.style.backgroundColor = "transparent";var tds = tr.cells;for(var i = 0; i < tds.length; i++) {tds[i].style.color = "threeddarkshadow";}}
}//当鼠标悬浮在单价单元格时,显示手势
function showHand(){if(event && event.srcElement && event.srcElement.tagName == "TD"){//取选中的单元格var td = event.srcElement;//设置选中的单元格,光标显示手的样式//cursor:光标td.style.cursor = "hand";}
}

第二种:优化方式(使用window.onload

demo08.html

<html>
<head><link rel="stylesheet" href="css/demo05.css"><script type="text/javascript" src="js/demo08.js"></script>
</head>
<body><div id="div_container"><div id="div_fruit_list"><table id="tbl_fruit"><tr><th class="w20">名称</th><th class="w20">单价</th><th class="w20">数量</th><th class="w20">小计</th><th>操作</th></tr><tr><td>苹果</td><td>5</td><td>20</td><td>100</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr><td>西瓜</td><td>3</td><td>20</td><td>60</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr><td>菠萝</td><td>4</td><td>25</td><td>100</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr><td>榴莲</td><td>3</td><td>30</td><td>90</td><td><img src="imgs/deleteIcon.jpg" class="deleteImg"/></td></tr><tr><td>总计</td><td colspan="4">999</td></tr></table></div></div>
</body>
</html>

demo08.js

window.onload=function(){//当页面加载完成,我们需要绑定各种事件//根据id获取到表格var fruitTbl = document.getElementById("tbl_fruit");//获取表格中所有行(tr)var rows = fruitTbl.rows;for(var i = 1; i < rows.length - 1; i++) {var tr = rows[i];//1.绑定鼠标悬浮及离开时设置背景颜色tr.onmouseover = showBGColor;//注意:没有();若有(),则代表当场调用这个方法,并且将这个方法的返回值返回给变量tr.onmouseout = clearBGColor;//获取tr这一行所有的单元格var cells = tr.cells;//获取单价单元格var priceTD = cells[1];//2.绑定鼠标悬浮在单价单元格变手势的事件priceTD.onmouseover = showHand;}
}//当鼠标悬浮时,显示背景颜色
function showBGColor(){//event:当前发生的事件//event.srcElement:事件源//alert(event.srcElement);//显示事件源的标签名:tr, td, th//alert(event.srcElement.tagName); //显示TDif(event && event.srcElement && event.srcElement.tagName == "TD") {//1、取选中的单元格var td = event.srcElement;//td.parentElement表示获取td的父元素 TR//2、取选中的单元格所在的单元行,并对此单元行进行操作var tr = td.parentElement;//如果想要通过js代码设置某节点的样式,则需要加上.style//3、设置了选中行的背景颜色tr.style.backgroundColor = "pink";//tr.cells表示获取这个tr中的所有的单元格var tds = tr.cells;//4、设置选中这行的单元格里的文字颜色for(var i = 0; i < tds.length; i++) {tds[i].style.color = "white";}}
}//当鼠标离开时,恢复原始样式
function clearBGColor(){if(event && event.srcElement && event.srcElement.tagName == "TD"){var td = event.srcElement;var tr = td.parentElement;tr.style.backgroundColor = "transparent";var tds = tr.cells;for(var i = 0; i < tds.length; i++) {tds[i].style.color = "threeddarkshadow";}}
}//当鼠标悬浮在单价单元格时,显示手势
function showHand(){if(event && event.srcElement && event.srcElement.tagName == "TD"){//取选中的单元格var td = event.srcElement;//设置选中的单元格,光标显示手的样式//cursor:光标td.style.cursor = "hand";}
}

JS代码实现:鼠标悬停与离开(两种方式)相关推荐

  1. [js] axios为什么可以使用对象和函数两种方式调用?是如何实现的?

    [js] axios为什么可以使用对象和函数两种方式调用?是如何实现的? axios 源码 初始化 看源码第一步,先看package.json.一般都会申明 main 主入口文件. // packag ...

  2. 利用jquery的qrcode.js插件生成二维码的两种方式的使用

    2019独角兽企业重金招聘Python工程师标准>>> 利用jquery的qrcode.js插件生成二维码的额两种方式,canvas(即画布)方式和table方式(原文地址http: ...

  3. 将Eclipse代码导入到Android Studio的两种方式

    转: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0104/2259.html 说到使用Android Studio,除了新建 ...

  4. node.js 获取异步方法里面的数据 =》 两种方式

    第一种: 通过回调函数实现: var fs = require('fs); function getmime(callback){ fs.readFile('./t1.js', function(er ...

  5. OpenLayers 6 代码绘制/draw交互组件绘制两种方式绘制椭圆过程详解

    引言 OpenLayers可以通过代码绘制多种几何形状,也可以通过draw类型的交互组件绘制几何形状,官方实例提供了类如圆.折线.矩形.星形等方法.除此之外,椭圆这种图形其实也是非常常见的几何图形,但 ...

  6. 代码编译时光标闪烁的两种方式

    两种反射的切换,按ins键.也就是把numberlock键关了后的0键.

  7. 使用ArcGIS JS API加载WMTS图层的两种方式

    文章目录 前言 方式一 方式二 前言 某些项目可能多方参与,每一方使用的GIS平台有时会有所不同,这时为了统一各方地图服务,通常会发布OGC标准的WMTS地图服务供各方使用.ArcGIS API fo ...

  8. android line分享代码,Android 分享到Line的两种方式

    写这篇文章主要目的是搜索到的答案都不是很完善,所以在此整理一下,防止有这需求的小伙伴们抓瞎 ;实现之前查了官方的文档,没有找到关于sdk支持分享的地方,只是提供了scheme支持(而且很难找..) 通 ...

  9. Python创建进程、线程的两种方式

    代码创建进程和线程的两种方式 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. ...

  10. 关于利用qrcode生成二维码的两种方式的区别

    首先以下内容是查找网上资料后了解的利用qrcode.js生成二维码的额两种方式,canvas(即画布)方式和table方式(原文地址http://www.helloweba.com/view-blog ...

最新文章

  1. 使用C++实现的一个五子棋系统(基于Socket编程)
  2. 小米十年,雷军的一往无前
  3. 《剑指offer》c++版本 4.二维数组中的查找
  4. linux带字符的行,linux小计,统计文件中包含指定字符串的行数
  5. 时间序列研(part12)--习题
  6. 15原型模式(Prototype)
  7. linux内核那些事之struct page
  8. pytorch torch.rand
  9. 微html5游戏,最好玩的Html5游戏社区:微游畅玩 惊艳上线
  10. Struts2.3使用Sitemesh如何配置web.xml?
  11. 21天学通JAVA之事务处理
  12. 火焰识别python_OpenCV_火焰检测——完整代码
  13. 人工智能 - 语音识别的技术原理是什么
  14. 《Python安全攻防:渗透测试实战指南》配套技术讲解
  15. Enzo高灵敏度检测——Arg8-Vasopressin ELISA kit
  16. 程序员月薪5W却发出哀叹:家庭枷锁太重,生活如同围城
  17. win10系统C盘突然红了爆满占了170G找了几天怎么也找不到哪个文件占用这么多磁盘空间
  18. 【CAD-Web】CAD/DWG的Web化
  19. 数据结构-头插法和尾插法
  20. 国内外网站空间优劣势

热门文章

  1. java设计模式-桥梁模式
  2. 腾讯云服务器怎么开通端口?以80端口为例轻量和CVM教程合集
  3. 【学习笔记】常见的提权方式
  4. 妈的,今天差点上当受骗
  5. 红黑二叉树(附写的源码)
  6. Ubuntu使用技巧:WinQQ自动隐藏解决
  7. 天天加班996,看完这3点,立刻提升工作效率
  8. python解析jmeter.jtl文件_jtl文件解析(jmeter+jenkins+python实现接口自动化)
  9. 解决停车库分时间段收费的问题
  10. 基于Java swing 和多线程开发一个猜拳游戏:有甲乙双方猜拳,投注其中一方,猜赢家,猜中即赢,猜错即输.