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

实现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日

相关文章

  • javascript函数以及基础写法100多条实用整理

    JavaScript函数是一段可以被反复调用执行的代码,这种代码的主要作用是完成一个独立的功能。JavaScript函数具有很高的可重用性和灵活性,常被用来封装一些特定的处理逻辑以便于在需要的时候调用。接下来将为大家介绍JavaScript函数的基础写法,包括参数、返回值、作用域、闭包等内容。 Function基础写法 无参函数 无参函数即不接受任何参数的函…

    JavaScript 2023年5月18日
    00
  • JavaScript ES6的函数拓展

    下面是关于JavaScript ES6的函数拓展的详细攻略。 什么是函数拓展 函数拓展是ECMAScript 6(简称ES6)中引入的一些新特性,可以让我们编写更简洁、易读、易维护的函数代码,并为函数提供了更多的灵活性和可扩展性。 ES6函数拓展的特点 ES6函数拓展具有以下几个特点: 箭头函数 默认参数 剩余参数 扩展运算符 接下来我们将分别讲解这些特点,…

    JavaScript 2023年5月18日
    00
  • javascript 基础篇1 什么是js 建立第一个js程序

    我来分享一下 “JavaScript 基础篇1:什么是 JavaScript?建立第一个 JavaScript 程序” 的完整攻略。 什么是 JavaScript? JavaScript 是一种高级编程语言,用于创建交互式网页和网页应用程序。它是一种脚本语言,意味着你不需要为了编写代码而拥有庞大的开发环境。 JavaScript 非常流行,现在可以在几乎所有…

    JavaScript 2023年5月27日
    00
  • javascript写的异步加载js文件函数(支持数组传参)

    让我详细讲解一下“javascript写的异步加载js文件函数(支持数组传参)”的完整攻略。 1. 异步加载JS文件的必要性 在网页开发中,我们经常需要引入一些外部的JS文件。正常情况下,我们通过在HTML页面的<head>标签或者<body>标签中添加<script>标签来实现JS文件的载入。但是,如果我们需要引入多个J…

    JavaScript 2023年5月27日
    00
  • JavaScript实现简单的时钟实例代码

    下面是实现简单的时钟实例代码的攻略: 步骤一:HTML结构 首先,在HTML中创建一个包含时钟的容器,并为时、分、秒分别添加class属性,代码如下: <div class="clock"> <span class="hour"></span> <span class=&quo…

    JavaScript 2023年5月27日
    00
  • javascript中[]和{}对象使用介绍

    来讲一下关于JavaScript中[]和{}对象的使用介绍吧。 首先,[]和{}均为JavaScript中的一种数据类型。其中,[]为数组类型,{}为对象类型。下面分别对它们进行介绍。 数组类型([]) 数组可以看做是一组有序的数据集合,每个数据都有一个对应的索引值。在JavaScript中,数组可以通过下标访问其元素。下标从0开始,即数组的第一个元素下标为…

    JavaScript 2023年5月27日
    00
  • element前端实现压缩图片的功能

    实现前端压缩图片的功能,可以提高网站的加载速度和用户体验,同时减少网络传输的流量和存储的空间。Element提供了el-upload组件,它支持通过设置before-upload钩子函数对上传的图片进行压缩。 以下是实现压缩图片的步骤: 步骤一:封装上传组件 在vue组件中,引入el-upload组件,并设置相关属性和方法。 <el-upload cl…

    JavaScript 2023年6月10日
    00
  • JavaScript+Canvas实现带跳动效果的粒子动画

    实现带跳动效果的粒子动画可以使用JavaScript和Canvas,下面是具体步骤: 步骤一:创建画布和粒子对象 首先,在HTML中创建一个canvas画布,并用JavaScript获取该画布对象。然后,定义粒子对象,包括粒子的位置、半径、速度、弹性等属性,以及在画布上绘制粒子的方法。以下是示例代码: <canvas id="myCanvas…

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