<!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=utf-8" />
<script language="JavaScript">
//判断所有的checkbox的选中状态
//@id : checkbox的id
function checkedStatus(id){
//获取checkbox,如果子节点没有设置id,就得不到一部分checkbox
var temp = document.getElementById(id);
//设置checkbox的下级checkbox的状态
setChildCheckBox(temp);
//设置checkbox的上级checkbox的状态
setParentCheckBox(temp);
}
//获取checkbox的下级checkbox信息
//@entity : checkbox的DOM对象
function findChildCheckBox(entity){
//存放下级checkbox的数组
var chkArray = new Array();
//判断是否有input标签
if(document.getElementsByTagName("input")){
//获取所有的input标签
var inputs = document.getElementsByTagName("input");
//遍历input标签,获取下级checkbox
for(var i = 0; i < inputs.length; i++){
var ele = inputs[i];
//判断type是“checkbox”,并且checkbox的parentId等于entity的id
if(ele.type == "checkbox" && ele.getAttribute("parentId") == entity.id){
chkArray.push(ele);
}
}
}
return chkArray;
}
//获取checkbox的同级checkbox信息
//@entity : checkbox的DOM对象
function findBrotherCheckBox(entity){
//存放同级checkbox的数组
var chkArray = new Array();
//判断是否有input标签
if(document.getElementsByTagName("input")){
//获取所有的input标签
var inputs = document.getElementsByTagName("input");
//遍历input标签,获取同级checkbox
for(var i = 0; i < inputs.length; i++){
var ele = inputs[i];
//判断type是“checkbox”,并且checkbox的parentId等于entity的parentId
if(ele.type == "checkbox" && ele.getAttribute("parentId") == entity.getAttribute("parentId")){
chkArray.push(ele);
}
}
}
return chkArray;
}
//获取checkbox的上级checkbox信息
//@entity : checkbox的DOM对象
function findParentCheckBox(entity){
//存放上级checkbox的对象
var _element = null;
//判断是否有input标签
if(document.getElementsByTagName("input")){
//获取所有的input标签
var inputs = document.getElementsByTagName("input");
//遍历input标签,获取上级checkbox
for(var i = 0; i < inputs.length; i++){
var ele = inputs[i];
//判断type是“checkbox”,并且checkbox的id等于entity的parentId
if(ele.type == "checkbox" && ele.id == entity.getAttribute("parentId")){
_element = ele;
break;
}
}
}
return _element;
}
//设置checkbox的下级checkbox的状态
//@entity : checkbox的DOM对象
function setChildCheckBox(entity){
//entity的选中状态
var status = entity.checked;
//获取entity的下级checkbox
var childList = findChildCheckBox(entity);
//判断是否有下级
if(childList.length > 0){
//遍历下级checkbox,并设置状态
for(var i = 0; i < childList.length; i++){
childList[i].checked = status;
//设置childList[i]的下级checkbox的状态
setChildCheckBox(childList[i]);
}
}
}
//设置checkbox的上级checkbox的状态
//@entity : checkbox的DOM对象
function setParentCheckBox(entity){
//entity的上级checkbox的选中状态
var parentChecked = true;
//获取entity的上级checkbox
var parentCheckBox = findParentCheckBox(entity);
//判断是否有上级
if(parentCheckBox){
//获取entity的同级checkbox
var brotherList = findBrotherCheckBox(entity);
//判断是否有同级
if(brotherList.length > 0){
//遍历同级checkbox
for(var i = 0; i < brotherList.length; i++){
//如果同级的checkbox有未选中的状态,则设置上级的checkbox的状态为false
if(brotherList[i].checked == false){
parentChecked = false;
break;
}
}
}
//设置上级checkbox的选中状态
parentCheckBox.checked = parentChecked;
//设置parentCheckbox的上级checkbox的状态
setParentCheckBox(parentCheckBox);
}
}
</script>
</HEAD>
<BODY>
<table>
<tr>
<!--根节点的parentId="0" -->
<td colspan="2"><input type="checkbox" name="chkAllBill" id="chkAllBill" parentId="0" onclick="checkedStatus(this.id);">ALL</td>
</tr>
<tr>
<!--子节点必须设置同时parentId,id -->
<td colspan="2"><input type="checkbox" name="chkBill" id="chkBill1" parentId="chkAllBill" value="chkBill1" onclick="checkedStatus(this.id);">Root111</td>
</tr>
<tr>
<td> </td>
<td>
<table>
<tr>
<td colspan='2'>
<input type="checkbox" name="chkMat1" id="chkMat11" parentId="chkBill1" value="chkMat11" onclick="checkedStatus(this.id);">Product111
</td>
</tr>
<tr>
<td> </td>
<td>
<table>
<tr>
<td>
<input type="checkbox" id="chkMat11-1" parentId="chkMat11" onclick="checkedStatus(this.id);">childMat111
</td>
</tr>
<tr>
<td>
<input type="checkbox" id="chkMat11-2" parentId="chkMat11" onclick="checkedStatus(this.id);">childMat222
</td>
</tr>
<tr>
<td>
<input type="checkbox" id="chkMat11-3" parentId="chkMat11" onclick="checkedStatus(this.id);">childMat333
</td>
</tr>
<tr>
<td>
<input type="checkbox" id="chkMat11-4" parentId="chkMat11" onclick="checkedStatus(this.id);">childMat444
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><input type="checkbox" name="chkMat1" id="chkMat12" parentId="chkBill1" value="chkMat12" onclick="checkedStatus(this.id);">Product222</td>
</tr>
<tr>
<td><input type="checkbox" name="chkMat1" id="chkMat13" parentId="chkBill1" value="chkMat13" onclick="checkedStatus(this.id);">Product333</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"><input type="checkbox" name="chkBill" id="chkBill2" parentId="chkAllBill" value="chkBill2" onclick="checkedStatus(this.id);">Root222</td>
</tr>
<tr>
<td> </td>
<td>
<table>
<tr>
<td><input type="checkbox" name="chkMat2" id="chkMat21" parentId="chkBill2" value="chkMat21" onclick="checkedStatus(this.id);">Product111</td>
</tr>
<tr>
<td><input type="checkbox" name="chkMat2" id="chkMat22" parentId="chkBill2" value="chkMat22" onclick="checkedStatus(this.id);">Product222</td>
</tr>
<tr>
<td><input type="checkbox" name="chkMat2" id="chkMat23" parentId="chkBill2" value="chkMat23" onclick="checkedStatus(this.id);">Product333</td>
</tr>
</table>
</td>
</tr>
</table>
</BODY>
</HTML>
分享到:
相关推荐
项目中的分页使用真分页,每次...把选中的checkbox中的id,其中包括模块id,操作id,拼接成一个字符串,然后把字符串传递到action中。 每次调用此页面时,首选调用action中的选中的id字符串,然后根据在id字符串的基
方法一:如何根据条件判断是否默认选中table表格前面的复选框 table.render({ elem: '#userTable' , url: '../sysRole/getUserList' , title: '用户列表' , page: true //开启分页 , cols: [[ {type:'...
在本文中,我们将深入探讨如何在layui框架中创建一个表格,其中某一列显示为复选框(checkbox),以便实现单选功能。layui是一款基于前端的轻量级组件库,提供了丰富的UI组件,包括表格(table)、按钮、表单元素等...
- `checkAll(name)`: 当选中一个父项时,该函数会被触发,其作用是将所有名为`name`的子项CheckBox选中。 - `clearAll(name)`: 当取消选中父项时,该函数会清除所有同名子项CheckBox的选择状态。 - `checkSingle...
这个案例演示了如何将上述理论应用于实际场景,如表格中`checkbox`的选择。 五、图片资源 "checked.png"和"unChecked.png"可能是用于自定义`checkbox`样式的图片资源。通过CSS的`background-image`属性将它们应用到...
在本文中,我们将深入探讨如何使用jQuery来获取checkbox选中的值,包括全选、取消全选、反选以及选中奇数行的操作,并讲解如何获取选中的值。 首先,我们需要引入jQuery库。在`1.html`文件中,我们看到包含了一个名...
在IT领域,尤其是在Android开发中,经常需要处理用户交互,比如多层嵌套的复选框(checkbox)的选中状态管理。这个场景通常出现在数据结构复杂,需要展示层次关系的时候,例如在ListView中嵌套一个Gridview,而...
在网页开发中,GridView是一种常见的数据展示控件,它用于以表格形式展示数据,并提供了诸如分页、排序、筛选等功能。在JavaScript环境下,处理GridView的数据交互尤为重要,特别是当需要获取用户通过Checkbox选择的...
### 隐藏LayUI数据表格表头的Checkbox复选框方法详解 #### 背景介绍 在前端开发过程中,经常会使用到LayUI框架搭建网页应用,尤其是在设计复杂的数据展示界面时,LayUI提供了强大的数据表格功能。然而,在某些场景...
在网页开发中,表格(Table)是常用的数据展示方式,而复选框(Checkbox)则为用户提供多选功能。在HTML的表格中实现复选框的全选与反选功能,能够大大提升用户体验,使用户可以便捷地选择一组数据。这里我们将详细...
在网页设计中,复选框(Checkbox)是用户界面中不可或缺的一部分,它允许用户对多个选项进行选择。本文将深入探讨“复选框的全选与取消”这一主题,主要基于提供的HTML文件“checkbox.html”。全选和取消功能通常...
它结合了Bootstrap框架的样式和JavaScript插件的功能,使表格更具吸引力和实用性。本篇将详细介绍如何在Bootstrap Table中实现复选框的默认选中功能,特别地,我们将根据从数据库获取的状态来决定复选框是否被选中。...
然而,在实际应用中,我们可能会遇到一个问题:当实现全选功能后,如果尝试取消选中其中的一项,全选复选框仍然保持选中状态,这显然不符合用户的预期。本文将深入探讨这个问题,并提供解决方案。 首先,我们需要...
本教程将深入探讨如何在layui的表格中动态禁用部分checkbox,并在全选操作时排除这些禁用的checkbox。 首先,我们需要了解layui table的基本用法。layui table可以通过JSON数据或Ajax异步加载数据,同时提供列定义...
在IT领域,尤其是在Web开发和用户界面设计中,"复选框选中表格中的行进行删除行操作"是一项常见的功能需求。这个功能主要用于提供用户友好的数据管理方式,让用户能够批量选择并处理表格中的数据。下面我们将详细...
在网页设计和开发中,`checkbox` 是一种常用的表单元素,用于用户进行多选操作。当需要实现“选中一个 `checkbox` 另一个也会被选中”的功能时,通常会涉及到事件监听和状态同步。这篇教程将详细介绍如何通过 ...
在IT领域,Checkbox(复选框)是一种常见的用户界面元素,广泛应用于网页、桌面应用程序以及移动应用中。Checkbox允许用户从多个选项中选择一个或多个,以表达他们的选择或者设置状态。本示例将深入探讨Checkbox的...
7. 代码优化:为了提高性能和用户体验,避免不必要的全表重新渲染,我们只对涉及到的行进行更新。 在提供的压缩包文件"layui-page-select-demo"中,应该包含了实现这一功能的示例代码。通过查看和学习这个示例,你...
在本文中,我们将深入探讨如何使用layui框架处理checkbox控件,包括如何设置默认选中、获取选中值以及清空所有选中项。layui是一款基于前端JavaScript库的模块化前端框架,提供了丰富的UI组件,包括表格、表单、按钮...