HTML5定制全选列头

随着HTML5产品分支的不断深入使用,HTML5的需求也是越来越多,表格组件的使用也不例外,什么排序,分页,自动列宽等。最近有客户提出了如果让表格的列头加上全选的功能。细细分析其实就是两部分,表格的body部分是勾选的列,表头也绘制成勾选的列。
对于表格body部分的勾选,最简单是应用TWaver默认的boolean类型的render,方法很简单,只要在创建表格列时设置下面的语句就行:

1 column.setValueType('boolean');

主要就是绘制表头的render,表头的render设置也是很easy,我们只要在表头的div中加上checkbox,然后再给checkbox加上动作,如果勾选上,就让这一列所有的数据都为true,反之亦然。代码如下:

1 var checkbox = document.createElement('input');
2 checkbox.setAttribute("type","checkbox");
3 checkbox.checked = true;
4checkbox.onclick = function(e){
5 var checked = this.checked;
6column.checked = checked;
7databox.forEach(function(element){
8     element.setClient("nVisible",checked);
9});
10}
11column.renderHeader = function(div){
12     div.style.textAlign = 'center';
13     div.appendChild(checkbox);
14}


这样的默认效果感觉还不是那么美观,我们用图片来替代checkbox也可以达到同样的效果,再来看看这张图,感觉是不是好看了一点。

完整的代码实现见下方:

1<!DOCTYPE html>
2 <meta charset="utf-8">
3<html>
4<head>
5     <title>Custom Table</title>
6     <style>
7         .visible-header{background:url(checkeye.png) 0px 0px; border:none; width: 12px; height: 7px; cursor: pointer;}
8         .unVisible-header{background:url(checkeye.png) -17px 0px;}
9     </style>
10     <script type="text/javascript" src="twaver.js"></script>
11     <script type="text/javascript">
12         function init() {
13             var box = new twaver.ElementBox();
14             initDataBox(box);
15             var table = new twaver.controls.Table(box);
16             table.setEditable(true);
17             var tablePane = new twaver.controls.TablePane(table);
18             var visibleColumn = createColumn(table, 'Visible', 'nVisible','client', 'boolean', 30);
19             createColumn(table, 'Id', 'id', 'accessor', 'string',300);
20             createColumn(table, 'Name', 'name', 'accessor', 'string',70);
21             renderHeaderCheckBox(visibleColumn,box);
22             visibleColumn.renderCell = function(cell){renderCellCheckbox(cell)};
23             document.body.appendChild(tablePane.getView());
24             tablePane.getView().style.left = '50px';
25             tablePane.getView().style.top = '50px';
26             tablePane.getView().style.width = '400px';
27             tablePane.getView().style.height = '800px';
28         }
29 
30         function renderHeaderCheckBox(column,databox){
31             var checkbox = document.createElement('input');
32             checkbox.setAttribute("type","button");
33             checkbox.setAttribute("class","visible-header");
34             checkbox.checked = true;
35             checkbox.onclick = function(e){
36                 var checked = this.checked;
37                 column.checked = checked;
38                 if(checked){
39                     checkbox.setAttribute("class","visible-header");
40                 }else{
41                     checkbox.setAttribute("class","visible-header unVisible-header");
42                 }
43                 this.checked = !this.checked;
44                 databox.forEach(function(element){
45                     element.setClient("nVisible",checked);
46                 });
47             }
48             column.renderHeader = function(div){
49                 div.style.textAlign = 'center';
50                 div.appendChild(checkbox);
51             }
52         }
53 
54         function renderCellCheckbox(cell){
55                 var checkbox = document.createElement('input');
56                 checkbox.setAttribute("type","button");
57                 var checked = cell.data.getClient("nVisible");
58                 if(checked){
59                     checkbox.setAttribute("class","visible-header");
60                 }else{
61                     checkbox.setAttribute("class","visible-header unVisible-header");
62                 }
63                 checkbox.onclick = function(e){
64                     var checked = cell.data.getClient("nVisible");
65                     cell.data.setClient("nVisible",!checked);
66                 }
67                 cell.div.style.textAlign = 'center';
68                 cell.div.appendChild(checkbox);
69         }
70 
71         function initDataBox(box){
72             for(var i = 0; i < 10; i++){
73                 var node = new twaver.Node();
74                 node.setName("node"+i);
75                 node.setClient('nVisible',true);
76                 box.add(node);
77             }
78         }
79 
80         function createColumn(table, name, propertyName, propertyType, valueType, width) {
81             var column = new twaver.Column(name);
82             column.setName(name);
83             column.setPropertyName(propertyName);
84             column.setPropertyType(propertyType);
85             if (valueType) column.setValueType(valueType);
86             if(width) column.setWidth(width);
87             column.setEditable(true);
88             column.setSortable(false);
89             table.getColumnBox().add(column);
90             return column;
91         }
92     </script>
93</head>
94 <body onload="init()" style="margin:0;">
95</body>
96</html>
手把手教你给泛微E9表单添加全选反选按钮(含代码解析) 本文详细解析了如何为泛微E9表单添加全选/反选功能,通过jQuery与WfForm API结合,实现明细表复选框的高效批量操作。文章从DOM结构、事件绑定到代码封装,提供了完整的实现方案与避坑指南,旨在提升表单操作体验与开发效率。 阅读详情

相关推荐

PyCharm 2026.1 HTML 开发:5 个高效编码技巧与 Live Edit 实时预览配置

本文详细介绍了 PyCharm 2026.1 版本中 HTML 开发的 5 个高效编码技巧及 Live Edit 实时预览功能的配置方法。通过智能代码补全、多光标编辑和实时文档查阅等功能,开发者可以显著提升工作效率。特别推荐 Live Edit 功能,实现代码修改后浏览器即时自动更新,大幅减少手动刷新时间。

weixin_30915275的博客 374

商品列表页 html 模板,商品列表模板

商品列表模板1、如何编辑商品列表模板商品列表模板存放在模板包archive文件夹中,命名以list_product为前缀在模板包中找到list_product.html 模板,复制另存为一个新模板,命名为list_product_自定义名称.html自定义名称可以是英文或拼音,但不能用中文!2、商品列表模板结构所有列表页面模板布局主要分三部分,页头/页中/页底。2.1 页头引用全站通用页头模板{t...

weixin_29793587的博客 2976

layui表格使用:经验总结(含案例、代码、截图)

文章目录layui表格使用:经验总结(含案例、代码、截图)一、原生table案例1.1. 原生table案例 · 效果截图:1.2. 原生table案例 · 代码示下:二、案例转化:layui-table,使用 · `经验总结:`2.1. 如何将原生table直接实时转化为layui-table?2.2. layui-table表格:各种边框设置 layui表格使用:经验总结(含案例、代码、截图) 引言 · 问题: html原生表格table如何实时转换为layui-table表格?转化的开关在哪里

草巾冒小子的博客 3770

HTML元素显示与隐藏

在WEB开发中,前台HTML中经常需要控制元素的隐藏与显示,我们最为最常见是二级导航栏(通过鼠标的移动来触发onmouseover,onmouseout事件来实现二级菜单的显示与隐藏)二级菜单的显示与隐藏。 然而控制元素的影响与显示有两种方式: 1、display : 设置如何及是否显示某元素 2、visibility : 设置元素可见或不可见 Example:

学习,你不是一个人在战斗 ~ 961302305(QQ,微信) 6140

jQuery全选反选实例代码及解析

例如,您可以根据实际的数据结构和样式进行HTML代码的调整,以及根据特定的业务逻辑进行jQuery代码的扩展和优化。当您勾选或取消勾选任何一个项目复选框时,全选复选框的状态将根据所有项目复选框的选中状态进行更新。现在,我们已经完成了全选和反选功能的实现。我们将使用事件处理程序来监听全选和反选复选框的状态变化,并相应地更新其他复选框的选中状态。首先,我们通过监听全选复选框的状态变化,将所有项目复选框的选中状态与全选复选框保持一致。在上面的代码中,我们创建了一个简单的表格,其中包含了一个表头和多个表格行。

CyberOI的博客 157

Vue2开发教程:动态分组与全选功能实现」 「从零开始:用Vue2开发开票管理页面」 「Vue2案例:动态分组与金额计算功能开发」 「前端实战:Vue2实现发票功能全解析」 「Vue2开发:动态表单与

Vue2开发教程:动态分组与全选功能实现」 「从零开始:用Vue2开发开票管理页面」 「Vue2案例:动态分组与金额计算功能开发」 「前端实战:Vue2实现发票功能全解析」 「Vue2开发:动态表单与数据分组功能实战」Vue2开发教程:动态分组与全选功能实现」 「从零开始:用Vue2开发开票管理页面」 「Vue2案例:动态分组与金额计算功能开发」 「前端实战:Vue2实现发票功能全解析」 「Vue2开发:动态表单与数据分组功能实战」

南北极之间 1161

html页面中表格的全选和取消全选功能的实现

在静态html页面中,经常会用到表格,而表格中有时会用到全选框,表示下列选项全部选中,其实这个功能还是挺容易实现的,就是一个javascript函数,看下面的例子 function toSelect(b){      var input = document.getElementsByTagName("input");     for (var i=0;i     {  

shainshine的专栏 4927

绿色系DataTables表格组件:列宽自由拖拽+整行点击选中复选框

一个即拿即用的前端表格解决方案,采用清新柔和的绿色视觉风格,适配各类管理后台数据列表场景。核心功能包括:鼠标悬停列边线即可拖拽调整任意列宽度,实时响应不需刷新;点击表格任意一行自动同步勾选该行关联的复选框,支持Shift/Ctrl多选,大幅提升批量操作效率。资源包已预集成全部运行依赖:jQuery 1.x精简版、Bootstrap 3基础CSS、Font Awesome与IcoMoon双图标字体(含eot/woff/ttf/svg全格式)、自定义login.css及admin样式文件、vjs字体资源。HTM

m9n0o的博客 192

html5里折叠选框,HTML页面中复选框的操作方法

复选框在网页中很是常见,无论是电商网站,还是平台,只有有需要选择的地方就会见到复选的身影。接下来,是我之前写过的两个小demo,都是关于复选框的,希望会给大家带来帮助。第一个是关于复选框全选反选的操作,当然我在里面还加了一个小功能,就是当选择底下尚品或者其他的东西的复选框全部为选中状态时则全选按钮也变为选中状态;反之亦然。td{border: 1px solid black;text-align:...

weixin_31807383的博客 572

Nearth-精品美女展示案列.rar

利用JQuery做的一个小案列,类似于商品展示。比如,你用鼠标去点击你想要看到的商品,那么相应的你会看到你想要看到的商品图片。(为了体现自己的思维,把商品图片改成了美女图片)

统信UOS系统盘扩容保姆级教程:用GParten-分区编辑器5分钟搞定

本文提供统信UOS系统盘扩容的详细图形化教程。针对系统盘空间不足问题,重点介绍如何使用系统自带的GParten-分区编辑器,在5-10分钟内安全、直观地完成扩容操作,无需记忆复杂命令,适合所有用户快速解决存储空间告急的困扰。

e3f4g5的博客 640

bubble html5,利用HTML5 Canvas创建交互式Bubble Chart

Josh Marinacci也在其博客中详细地介绍了“如何利用HTML5 Canvas创建可以在移动桌面上运行的交互式图表以及如何利用真实数据填充图表。”下面让我们跟随作者学习如何创建我们自己的Bubble Chart。准备工作:需要知识:媒介HTML和JavaScript需求:文本编辑器和现代浏览器关于Bubble ChartBubble Chart就和它听起来一样是由气泡组成的图表,气泡实际...

weixin_39640203的博客 264

K-means算法代码实现(python)

K-means算法代码实现以及解决质心选择问题 计算距离 距离通常使用欧几里得距离来衡量 def euclDistance(vector1, vector2): return np.sqrt(sum((vector2 - vector1) ** 2)) 初始化质心 def initCentroids(data, k): numSamples, dim = data.shape ...

江南小帅瓜的博客 1万+

基于HTML CANVAS和EXCEL的xlsx文件展示工具websheet

websheet基于HTML5的CANVAS和JAVASCRIPT开发的纯前端xlsx文件展示控件,该控件着重的页面展示,主要完成了文件导入、导出、文本展示、格式化文本、合并单元格、边框、底色、设置行列宽度高度,行列隐藏、视图锁定、基础表格、撤销、重做、快捷键、公式的解析和计算等功能。支持自定义函数,单元格展示编辑和右击菜单定制开发。

火柴盒 1190

WGCNA样本量不够怎么办?5种替代方案帮你解决小样本基因共表达分析难题

本文针对WGCNA样本量不足的问题,提供了5种科学替代方案,包括CEMiTool、参数调整、多组学数据整合、机器学习特征提取和公共数据利用。这些方法帮助研究者在小样本条件下仍能进行可靠的基因共表达分析,特别适用于罕见病和珍贵临床样本研究。

weixin_42554042的博客 301

实测对比:纳芯微NSD1624在光伏逆变器中的性能表现(含温度测试数据)

本文详细评测了纳芯微NSD1624非隔离驱动芯片在光伏逆变器中的性能表现,包括动态效率、高温稳定性及抗干扰能力。实测数据显示,该芯片在800V母线电压下效率峰值达99.03%,高温环境下结温稳定在102.7℃,且传播延迟一致性优异。与竞品相比,NSD1624在总损耗和热阻方面具有显著优势,是光伏逆变器驱动方案的理想选择。

weixin_29297127的博客 363

【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段

本文介绍了 Sublime Text 自定义代码片段的操作技巧,非常适合需要快速输入一系列高度格式化的文本内容。配合大量截图,可以快速掌握该技巧,提升日常工作效率。

PeacefulWinter的博客 1949

f103vet6 SD卡SDIO+DMA配置避坑指南:从初始化卡死到稳定读写的全流程解析

本文详细解析STM32F103VET6芯片SD卡SDIO与DMA配置中的常见问题,从初始化卡死到读写不稳定的全流程解决方案。重点分析总线宽度配置、时钟分频调整及DMA通道管理技巧,帮助开发者避开常见陷阱,实现稳定高效的数据存储。

u0v1w2x3的博客 666

html网页编辑器 Live,GitHub - h5live/graph.editor: HTML5拓扑图编辑器

#拓扑图编辑器介绍Graph.Editor是一款基于HTML5技术的拓补图编辑器,采用jquery插件的形式,是Qunee图形组件的扩展项目数据可视化是一件有趣的工作,冰冷的数据变成美观的图形,如同命令行之于Mac OS X图形界面的,传统的图形组件以图表(Chart)居多,不少优秀的开源或者商业的作品,比如d3js, echarts, highcharts,而拓扑图、流程图组件相对少一些,知名的...

weixin_35733495的博客 435

弹窗提示报错: F:\c\CFX5\bin\Debug\net9.0-windows10.0.26100.0\CFX5.dll 面向无法动态枚举工具箱项目的平台...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 944

Python编程基础05:运算符与表达式

文章目录一、算术运算符1、分类说明表2、注意事项3、案例演示任务1、计算成绩差与平均成绩课堂练习:编程处理带余除法。任务2、打印购物小票 运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。表达式是指由常量、变量和运算符组成的一个算式。编写程序对数据进行处理,其实处理就是对数据实施各种各样的运算,搞懂运算符与表达式是我们编写程序的基础性工作,本次讲课笔记通过案例讲解各种运算符的用法以及正确书写Python表达式的注意事项。 一、算术运算符 Python中的算术运算符就是用来处理四则运算的符号,也是

howard2005的专栏 3119

定制Bootstrap

定制BootstrapBootStrap库文件很大,把所有效果和插件都导入页面,一方面会增加带宽负荷,影响页面的响应速度;另一方面,众多的CSS类样式和JavaScript源代码,可能会与页面的样式和脚本发生冲突,影响解析时的执行效率和页面显示效果。因此,如果仅仅使用其中的个别效果或特定插件,建议通过定制方式使用BootStrap。随着Bootstrap3的推出,对Bootstrap-2.3.2版...

歪脖先生的博客 716

【Mode Management】AUTOSAR架构下RH850-F1KM芯片深度休眠配置实践

AUTOSAR架构下RH850-F1KM芯片深度休眠配置实践

qq_36056498的博客 1087

HTML笔记——①HTML简介基础和入门、Vscode常用设置

HTML简介、HTML的基本结构和属性、HTML初始代码、HTML注释、特殊字符 HTML是做网站基础编程语言,一般情况下需要配合使用JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。

yanqiu12138的博客 1927

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Ueditor的两种定制方式

引言 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 官网:http://ueditor.baidu.com/website/ 在线定制:http://ueditor.baidu.com/website/download.html#ubuilder Asp.Net和Ueditor...

weixin_33969116的博客 198

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: Autolayout性能优化
下一篇: 服务器各项指标的图形化显示
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值