JavaScript实现表格隔行变色、鼠标悬停及点击选中效果
本文介绍如何使用JavaScript为HTML表格添加隔行变色、鼠标悬停高亮及点击选中效果。通过遍历表格行并应用CSS类,利用取模运算区分奇偶行,结合事件监听实现交互反馈,提升数据可读性与用户体验。
JavaScript表格交互效果概述
本文通过一个具体实例,详细讲解了如何利用JavaScript实现表格的隔行变色、鼠标移入移出以及点击选中效果。该方案旨在为开发者提供参考,帮助优化网页表格的视觉呈现与交互体验。
表格隔行变色是一种常见的前端交互效果,主要目的是提升用户浏览长表格数据时的体验,减少视觉疲劳并提高数据辨识度。
效果实现原理与逻辑
具体实现逻辑如下:
首先,表格的奇数行和偶数行采用不同的背景颜色,这有助于防止用户在阅读大量数据时发生串行错误。其次,当鼠标移动到某一行时,该行背景色会发生变化;当鼠标移出后,颜色恢复原状。这种动态反馈能让用户清晰地识别当前关注的行。
此外,实现表格点击变色功能,允许用户通过点击选中特定的行,便于后续操作或保留选中状态。
技术要点说明: 1. 利用 `i%2` 对行索引进行取模运算,结果仅为0或1,从而区分奇偶行并应用不同的样式,实现隔行变色。 2. 为表格行对象设置 `onoff` 属性(如 `tables_li[i].onoff = 1`),用于标记行的选中状态。在实现点击变色时,需确保鼠标移入移出事件不会覆盖已选中的样式,保持选中状态的视觉一致性。
代码实现与细节解析
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>无标题文档</title>
<style>
table{
border-collapse:collapse
}
table td{
height:26px;
font-size:12px;
color:#333;
border:1px solid #09c;
text-align:center;
padding:0 10px;
}
</style>
</head>
<body>
<script>
window.onload = function(){
var tables = document.getElementById("tables");
var tables_li = tables.getElementsByTagName("tr");
var i=0;
var len = tables_li.length;
for(i=0; i<len; i++){
tables_li[i].onoff = 1;
tables_li[i].index = i;
tables_li[i].style.backgroundColor = i%2?"#ace":"";
tables_li[i].onmouseover = function(){
if(this.onoff == 1){
this.style.backgroundColor = "#06c";
}
}
tables_li[i].onmouseout = function(){
if(this.onoff == 1){
this.style.backgroundColor = this.index%2?"#ace":"";
}
}
tables_li[i].onclick = function(){
if(this.onoff == 1){
this.onoff = 0;
this.style.backgroundColor = "#069";
}else{
this.onoff = 1;
this.style.backgroundColor = this.index%2?"#ace":"";
}
}
}
}
</script>
<table width="500" border="0" align="center"
cellpadding="0" cellspacing="0" id="tables">
<tr>
<td>1</td>
<td>内容内容</td>
</tr>
<tr>
<td>2</td>
<td>内容内容</td>
</tr>
<tr>
<td>3</td>
<td>内容内容</td>
</tr>
<tr>
<td>4</td>
<td>内容内容</td>
</tr>
<tr>
<td>5</td>
<td>内容内容</td>
</tr>
<tr>
<td>6</td>
<td>内容内容</td>
</tr>
<tr>
<td>7</td>
<td>内容内容</td>
</tr>
<tr>
<td>8</td>
<td>内容内容</td>
</tr>
<tr>
<td>9</td>
<td>内容内容</td>
</tr>
<tr>
<td>10</td>
<td>内容内容</td>
</tr>
</table>
</body>
</html>
以下是完整的实现代码示例:
JavaScript将图片转换为Base64编码的两种途径
2026-11-05 16:43:05
怎么在 Vue 或 React 项目中正确集成 animate.js
2026-11-05 10:23:38
JS注册事件:addEventListener基础语法与参数详解
2026-11-05 08:44:56
JSP和JS的区别:运行环境与服务端/客户端职责解析
2026-11-04 23:34:36
pdf.js 官方下载地址:GitHub Release 获取预编译包
2026-11-04 23:07:27
