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加强之自定义event事件
Sep 21 Javascript
node.js中的fs.realpathSync方法使用说明
Dec 16 Javascript
Javascript动画效果(2)
Oct 11 Javascript
easyui导出excel无法弹出下载框的快速解决方法
Nov 10 Javascript
javascript如何用递归写一个简单的树形结构示例
Sep 06 Javascript
mui框架移动开发初体验详解
Oct 11 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 Javascript
详解50行代码,Node爬虫练手项目
Apr 22 Javascript
20多个小事例带你重温ES10新特性(小结)
Sep 29 Javascript
vue-cli和v-charts实现可视化图表过程解析
Oct 08 Javascript
JavaScript将数组转换为链表的方法
Feb 16 Javascript
深入浅析vue全局环境变量和模式
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
php json相关函数用法示例
2017/03/28 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
看了就知道什么是JSON
2007/12/09 Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
python求列表交集的方法汇总
2014/11/10 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python实现弹窗祝福效果
2019/04/07 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
python批量解压zip文件的方法
2019/08/20 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
机电一体化大学生求职信
2013/11/08 职场文书
高中的自我鉴定
2013/12/16 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
2014年消防工作总结
2014/11/21 职场文书
教师个人总结范文
2015/02/11 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python