javascript实现可全选、反选及删除表格的方法


Posted in Javascript onMay 15, 2015

本文实例讲述了javascript实现可全选、反选及删除表格的方法。分享给大家供大家参考。具体实现方法如下:

<!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" />
<title>可以全选反选删除的表格</title>
<style type="text/css">
body,table
{
 margin:0;
 padding:0;
 font-size:14px;
}   
table,tr,th,td
{
 border:1px solid #cdc;
}
th
{
 background-color:green;
 width:100px;
}
.oddColor
{
 background-color:#ccc;
}
.evenColor
{
 background-color:#fcf;
}
.overColor
{
 background-color:#dff;
}
</style>
<script type="text/javascript">
 //定义嵌套数组
 var datas = [["张三", 30, "南昌"], ["李四", 25, "北京"], ["王五", 20, "郑州"],
    ["赵六", 19, "武汉"], ["李莫", 18, "深圳"], ["罗成", 33, "重庆"],
    ["王平", 31, "天津"], ["刘萍", 22, "上海"], ["杨丽", 17, "石家庄"],
    ["郭丽", 30, "广州"]];
 //动态创建表格
 function CreateMyTable() {
  var tblMain = document.getElementById("tblMain");
  var rowsCount = tblMain.rows.length;
  var addRow;
  var addCol;
  var detailInfos;
  for (var i = 0; i < datas.length; i++) {
   addRow = tblMain.insertRow(rowsCount - 1);//控制数据行添加到倒数第二列
   addCol = addRow.insertCell(-1);
   addCol.innerHTML = "<input type='checkbox' name='item' />";
   addCol.align = "center"; //控制列居中
   detailInfos = datas[i];
   for (var j = 0; j < detailInfos.length; j++) {
    addCol = addRow.insertCell(-1);
    addCol.innerHTML = detailInfos[j];
   }
   addCol = addRow.insertCell(-1);
   addCol.innerHTML = "<input type='button' id='btnDel" + i + "' value='删除' onclick='btnDel(this)' />";
   addCol.align = "center"; //控制列居中
   rowsCount++;
  }
  TableColor();
 }
 //设置网格间隔色和高亮显示
 var oldClassName;    //记住行的背景色
 function TableColor() {
  var tblMain = document.getElementById("tblMain");
  var rowNodes = tblMain.rows;
  for (var i = 1; i < rowNodes.length-1; i++) { //除去首行和末行
   if (i % 2 == 0) {
    rowNodes[i].className = "evenColor";
   }
   else {
    rowNodes[i].className = "oddColor";
   }
   rowNodes[i].onmouseover = function () {
    oldClassName = this.className;
    this.className = "overColor";
   }
   rowNodes[i].onmouseout = function () {
    this.className = oldClassName;
   }
  }
 }
 //复选框全选函数
 function checkAll() {
  var currentCheckNode = event.srcElement;
  var checkAllNodes = document.getElementsByName("all");
  //把没有点击的全选复选框去除复选
  for (var i = 0; i < checkAllNodes.length; i++) {
   if (currentCheckNode != checkAllNodes[i]) {
    checkAllNodes[i].checked = false;
   }
  }
  var checkItemNodes = document.getElementsByName("item");
  for (var i = 0; i < checkItemNodes.length; i++) {
   checkItemNodes[i].checked = currentCheckNode.checked;
  }
 }
 //按钮选择函数
 function btnCheckboxSel(index) {
  var checkItemNodes = document.getElementsByName("item");
  for (var i = 0; i < checkItemNodes.length; i++) {
   if (index == 2) {
    checkItemNodes[i].checked = !checkItemNodes[i].checked;
   }
   else {
    checkItemNodes[i].checked = index;
   }
  }
 }
 //每行的删除按钮函数
 function btnDel(btn) {
  var tblMain = document.getElementById("tblMain");
  var delRowNode = btn.parentNode.parentNode;
  var sMsg = "您是否要删除 姓名为:【" + delRowNode.cells[1].innerText + "】,年龄为:【" +
      delRowNode.cells[2].innerText + "】,城市为:【" +
      delRowNode.cells[3].innerText + "】 的数据?";
  if (window.confirm(sMsg)) {
   tblMain.tBodies[0].removeChild(delRowNode);
   TableColor();
  }
 }
 //删除所选项按钮函数
 function btnDelSelectRow() {
  var arrDel = new Array();
  var pos = 0;
  var itemNodes = document.getElementsByName("item");
  for (var i = 0; i < itemNodes.length; i++) {
   if (itemNodes[i].checked) {
    arrDel[pos] = itemNodes[i].parentNode.parentNode;
    pos++;
   }
  }
  if (pos <= 0) {
   return;
  }
  if (!window.confirm("是否要删除选择的数据?"))
   return;
  var tblMain = document.getElementById("tblMain");
  for (var i = 0; i < arrDel.length; i++) {
   tblMain.tBodies[0].removeChild(arrDel[i]);
  }
 }
 window.onload = CreateMyTable;
</script>
</head>
<body>
<table id="tblMain" cellspacing="0" cellpadding="10px" align="center">
 <tbody>
  <tr>
   <th><input type="checkbox" name="all" onclick="checkAll()" />全选</th>
   <th>姓名</th>
   <th>年龄</th>
   <th>城市</th>
   <th>操作</th>
  </tr>
  <tr>
   <th><input type="checkbox" name="all" onclick="checkAll()" />全选</th>
   <th colspan="4">
    <input type="button" value="全选" onclick="btnCheckboxSel(1)" />
    <input type="button" value="全清" onclick="btnCheckboxSel(0)" />
    <input type="button" value="反选" onclick="btnCheckboxSel(2)" />
    <input type="button" value="删除所选项" onclick="btnDelSelectRow()" />
   </th>
  </tr>
 </tbody>  
</table>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript 冒号 使用说明
Jun 06 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
js中 javascript:void(0) 用法详解
Aug 11 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
全系IE支持Bootstrap的解决方法
Oct 19 Javascript
jQuery实现form表单元素序列化为json对象的方法
Dec 09 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
js绘制购物车抛物线动画
Nov 18 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
为什么node.js不适合大型项目
Apr 28 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
May 15 #Javascript
javascript实现Table排序的方法
May 15 #Javascript
Javascript动态创建表格及删除行列的方法
May 15 #Javascript
javascript制作的滑动图片菜单
May 15 #Javascript
Javascript通过overflow控制列表闭合与展开的方法
May 15 #Javascript
javascript实现日期按月份加减
May 15 #Javascript
Javascript递归打印Document层次关系实例分析
May 15 #Javascript
You might like
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
php微信开发之上传临时素材
2016/06/24 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
python判断字符串是否包含子字符串的方法
2015/03/24 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python语言描述最大连续子序列和
2017/12/05 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python事件驱动event实现详解
2018/11/21 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
少先队入队活动方案
2014/02/08 职场文书
陈欧的广告词
2014/03/18 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
会计工作态度自我评价
2015/03/06 职场文书
JavaScript设计模式之原型模式详情
2022/06/21 Javascript