JavaScript实现表格隔行变色、鼠标悬停及点击选中效果

作者:流萤时间:2026-10-29 08:22:06浏览:459

本文介绍如何使用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>

以下是完整的实现代码示例:

作者最新文章