js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色

yizhihongxing

实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色的过程分为以下几步:

  1. HTML结构构建

先构建一个table,需要注意每个单元格需要有一个唯一的id值,如下所示:

<table id="myGridview">
  <thead>
    <tr>
      <th>ID</th>
      <th>名称</th>
      <th>操作</th>
    </tr>
  </thead>
  <tbody>
    <tr id="row1">
      <td>1</td>
      <td>测试1</td>
      <td><button>编辑</button></td>
    </tr>
    <tr id="row2">
      <td>2</td>
      <td>测试2</td>
      <td><button>编辑</button></td>
    </tr>
    <tr id="row3">
      <td>3</td>
      <td>测试3</td>
      <td><button>编辑</button></td>
    </tr>
  </tbody>
</table>
  1. CSS样式定义

定义表格的CSS样式,如下所示:

#myGridview {
  border-collapse: collapse;
  width: 100%;
  font-size: 14px;
  font-family: Arial, sans-serif;
}

#myGridview th, #myGridview td {
  border: 1px solid #ccc;
  padding: 8px;
  text-align: center;
}

#myGridview th {
  background-color: #f2f2f2;
}

#myGridview tbody tr:nth-child(even) {
  background-color: #f9f9f9;
}

#myGridview tbody tr:hover {
  background-color: #f2f2f2;
}

#myGridview tbody tr.selected {
  background-color: #d9edf7;
}

#myGridview tbody tr.selected:hover {
  background-color: #bce8f1;
}
  1. JS实现交替行、选中行、鼠标移动行背景色效果

为了保证只有一行被选中,需要使用一个变量来保存当前被选中的行的id,代码如下所示:

var selectedRowId = null;

接下来,在表格的每一行上都绑定一个click事件和mouseover事件,用于处理交替行和选中行的效果,代码如下所示:

var rows = document.querySelector("#myGridview tbody").rows;

for (var i = 0; i < rows.length; i++) {
  rows[i].addEventListener("click", function() {
    // 取消原来选中的行的选中状态
    if (selectedRowId) {
      document.querySelector("#" + selectedRowId).classList.remove("selected");
    }
    // 设置当前行的选中状态
    this.classList.add("selected");
    selectedRowId = this.id;
  });

  rows[i].addEventListener("mouseover", function() {
    // 取消原来选中的行的选中状态
    if (selectedRowId) {
      document.querySelector("#" + selectedRowId).classList.remove("selected");
    }
    // 设置当前行的选中状态
    this.classList.add("selected");
    selectedRowId = this.id;
  });
}

在鼠标离开行时,需要将其选中状态取消,代码如下所示:

for (var i = 0; i < rows.length; i++) {
  rows[i].addEventListener("mouseout", function() {
    if (this.id !== selectedRowId) {
      this.classList.remove("selected");
    }
  });
}

这样就可以实现交替行、选中行、鼠标移动行背景色效果了。

示例1: 点击行,该行背景色变为蓝色,其他行背景色恢复默认,代码演示:https://codepen.io/tianhenglin/pen/JjPRQgN

示例2: 鼠标悬停行,该行背景色变为灰色,鼠标移出行,该行背景色恢复默认,其他行背景色恢复默认,代码演示:https://codepen.io/tianhenglin/pen/zYzQwNg

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • js实现让某个动作延迟几秒执行

    实现动作延迟执行可以通过JavaScript语言中提供的setTimeout()函数来实现。 该函数的语法为: setTimeout(function, delay) 其中“function”参数是需要执行的函数名或函数体,delay参数是延迟的时间,单位是毫秒。 下面给出两个示例来讲解该函数如何实现动作延迟执行: 示例一:实现3秒钟后弹窗提示 可以使用以下…

    JavaScript 2023年6月11日
    00
  • 理解 JavaScript EventEmitter

    理解 JavaScript EventEmitter EventEmitter 是 Node.js 的核心模块之一,不过它也可以在浏览器中使用。通过 EventEmitter,我们可以简单而有效地实现各种事件模型,如事件监听、事件触发等;在 Web 开发中,EventEmitter 常用于实现自定义事件机制。 什么是 EventEmitter? EventE…

    JavaScript 2023年5月28日
    00
  • js实现滚动条自动滚动

    JS实现滚动条自动滚动,可以用JavaScript语言自己编写代码,实现滚动条自动滚动的效果。下面是实现的攻略。 一、实现的基本原理 JS代码获取要滚动的页面元素。 判断页面元素是否需要滚动,如果需要滚动则添加自动滚动的代码。 根据需要自动滚动的速度设置滚动的时间间隔和滚动的像素数。 二、示例代码 下面将通过两个示例,来演示如何使用JS实现滚动条自动滚动的效…

    JavaScript 2023年6月11日
    00
  • js超时调用setTimeout和间歇调用setInterval实例分析

    JS超时调用setTimeout和间歇调用setInterval实例分析 setTimeout函数 setTimeout函数是JS中的一个高级函数,可以实现代码的延时执行。 语法: setTimeout(function, delay, param1, param2, …) function:必选参数,是需要延时执行的函数或一个字符串经过编译生成的JS代…

    JavaScript 2023年6月10日
    00
  • websocket++简单使用及实例分析

    Websocket++简单使用及实例分析 Websocket++是一个C++的WebSocket库,用于实现基于WebSocket协议的网络应用程序。这个库提供了许多的接口和功能,使得程序开发更为简单和高效,同时也支持多种平台和操作系统。本文将详细讲解Websocket++的简单使用及实例分析,帮助读者更好的了解这个库的特点和优势。 Websocket++的…

    JavaScript 2023年5月28日
    00
  • 在web worker中使用fetch实例详解

    下面是针对“在web worker中使用fetch实例详解”的完整攻略: 什么是Web Worker Web Worker是一项Web技术,它是一种能够让JavaScript代码在浏览器后台运行的机制。通过Web Worker,可以让一部分长时间运行的JavaScript代码运行在单独的线程中,而不会阻塞UI线程的运行,从而提高了JavaScript的执行效…

    JavaScript 2023年5月28日
    00
  • JS匹配日期和时间的正则表达式示例

    当需要从文本中匹配日期和时间信息时,可以使用正则表达式来准确地实现。下面是关于“JS匹配日期和时间的正则表达式示例”的完整攻略。 1. 正则表达式基础知识 在进行日期和时间信息的正则匹配时,需要掌握一些基础知识。 字符集:用于匹配多个字符中的任意一个字符,用方括号([])来表示。如[abc]匹配字符a、b或c中的任意一个字符。 重复次数:用于匹配前面一个字符…

    JavaScript 2023年5月27日
    00
  • JavaScript es6中var、let以及const三者区别案例详解

    JavaScript es6中var、let以及const三者区别案例详解 var、let和const简介 在ES6以前,JavaScript的变量定义只有var一种方式。在ES6中新增了let和const两种定义变量的方式。 var定义的是一个可变的变量,它在函数作用域或全局作用域内都是有效的,并且可以被重新赋值。 let定义的是一个块级作用域的变量,它只…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部