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 相关文章推荐
jquery跟js初始化加载的多种方法及区别介绍
Apr 02 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
原生js实现ajax方法(超简单)
Sep 20 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
微信小程序 富文本转文本实例详解
Oct 24 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
详解vue 数据传递的方法
Apr 19 Javascript
javascript和php使用ajax通信传递JSON的实例
Aug 21 Javascript
js中位运算的运用实例分析
Dec 11 Javascript
在pycharm中开发vue的方法步骤
Mar 04 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 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
php中转义mysql语句的实现代码
2011/06/24 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
validator验证控件使用代码
2010/11/23 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
Python Tkinter GUI编程入门介绍
2015/03/10 Python
python读取二进制mnist实例详解
2017/05/31 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
python去掉空白行的多种实现代码
2018/03/19 Python
Django models.py应用实现过程详解
2019/07/29 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
python实现银行管理系统
2019/10/25 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
Python 里最强的地图绘制神器
2021/03/01 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
实习生自我鉴定
2013/12/12 职场文书
社区工作者先进事迹
2014/01/18 职场文书
幼儿园评语大全
2014/04/17 职场文书
初中英语演讲稿
2014/04/29 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL