JavaScript实现节点的删除与序号重建实例


Posted in Javascript onAugust 05, 2015

本文实例讲述了JavaScript实现节点的删除与序号重建。分享给大家供大家参考。具体如下:

这里演示JavaScript节点的删除与重建方法,删除节点后,会自动重新建立节点,序号自动排列,比如删除当前的第3条数据后,第4条的序号会智能变为3,以此类推,保证序号不乱。

运行效果如下图所示:

删除前:

JavaScript实现节点的删除与序号重建实例

删除后:

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">
html{color:#000;background:#FFF;font-family:Arial, Helvetica, sans-serif;}
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}
table{border-collapse:collapse;border-spacing:0;}
fieldset,img{border:0;}
address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
li{list-style:none;}
caption,th{text-align:left;}
h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}
q:before,q:after{content:'';}
abbr,acronym{border:0;font-variant:normal;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}
input,textarea,select{*font-size:100%;}
legend{color:#000;}
body{text-align:center;color:#000;}
a:link,a:visited,a:hover{text-decoration:none;color:#049;}
a:hover{text-decoration:underline;}
table{margin:30px auto;width:600px;border:1px solid #CDCDCD;}
thead{background-color:#F3F3F3;}
th,td{height:26px;line-height:26px;font-size:14px;text-align:center;}
.left{text-align:left;}
</style>
<base target="_blank" />
</head>
<body>
<table cellpadding="0" cellspacing="0">
<thead>
  <tr>
    <th width="50">编号</th>
    <th>标题</th>
    <th width="50">操作</th>
  </tr>
</thead>
<tbody id="reroder-list">
  <tr>
    <td>1</td>
    <td class="left"><a href="https://3water.com/article/70631.htm">JS+CSS实现表格高亮的方法</a></td>
    <td><a href="#del" class="lnk-del">删除</a></td>
  </tr>
  <tr>
    <td>2</td>
    <td class="left"><a href="https://3water.com/article/70625.htm">JavaScript节点及列表操作实例小结</a></td>
    <td><a href="#del" class="lnk-del">删除</a></td>
  </tr>
  <tr>
    <td>3</td>
    <td class="left"> <a href="https://3water.com/article/70613.htm">JavaScript实现删除,移动和复制文件的方法</a></td>
    <td><a href="#del" class="lnk-del">删除</a></td>
  </tr>
  </tbody>
</table>
<script type="text/javascript">
var delAndReorder = function(root,rowTag,delTag,delClass,idTag){
  var doc = document, 
  list = doc.getElementById(root || 'reroder-list');
  if(!list){
    return false;
  }
  var stopEvent = function(evt){
    stopPropagation(evt);
    preventDefault(evt);
  }, 
  stopPropagation = function(evt){
    if (evt.stopPropagation) {
      evt.stopPropagation();
    }
    else {
      evt.cancelBubble = true;
    }
  }, 
  preventDefault = function(evt){
    if (evt.preventDefault) {
      evt.preventDefault();
    }
    else {
      evt.returnValue = false;
    }
  },
  hasClass = function(elem, className){
    var has = new RegExp("(?:^|\\s+)" + className + "(?:\\s+|$)");
    return has.test(elem.className);
  },
  byClass = function(tag,className,root){
    var elems = [], 
    tempEl = root.getElementsByTagName(tag),
    i, 
    len = tempEl.length;
    
    for (i = 0; i < len; ++i) {
      if (hasClass(tempEl[i], className)) {
        elems.push(tempEl[i]);
      }
    }
    if (elems.length < 1) {
      return false;
    }
    else {
      return elems;
    }
  },
  firstTds = [],
  rows = list.getElementsByTagName(rowTag || 'tr'),
  delBtns = byClass((delTag || 'a'), (delClass || 'lnk-del'), list),
  i = 0, 
  len = rows.length,
  reorder = function(idx){
    var i = idx, len = firstTds.length;
    if(idx!==(len-1)){
      for(;i<len;i+=1){
        firstTds[i].innerHTML = i;
      }
    }
  };
  for (; i < len; i += 1) {
    firstTds.push(rows[i].getElementsByTagName(idTag || 'td')[0]);
    delBtns[i].onclick = function(idx){
      return function(event){
        var evt = event || window.event;
        list.removeChild(rows[idx]);
        reorder(idx);
        delAndReorder();
        stopEvent(evt);
      };
    }(i);
  }
}  
delAndReorder();
</script>
</body>
</html>

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

Javascript 相关文章推荐
改版了网上的一个js操作userdata
Apr 27 Javascript
几个比较实用的JavaScript 测试及效验工具
Apr 18 Javascript
JavaScript高级程序设计 事件学习笔记
Sep 10 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
javascript快速排序算法详解
Sep 17 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
Oct 25 Javascript
深入理解jquery自定义动画animate()
May 24 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
详解js中call与apply关键字的作用
Nov 21 Javascript
基于Node.js的大文件分片上传示例
Jun 19 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
Sep 15 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 #Javascript
JS+CSS实现表格高亮的方法
Aug 05 #Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 #Javascript
JavaScript节点及列表操作实例小结
Aug 05 #Javascript
使用coffeescript编写node.js项目的方法汇总
Aug 05 #Javascript
coffeescript使用的方式汇总
Aug 05 #Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 #Javascript
You might like
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php curl_init函数用法
2014/01/31 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
创联软件面试题笔试题
2012/10/07 面试题
高中毕业自我鉴定
2013/12/19 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书