<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>增加Table行</title>
</head>
<script language="javascript">// Example: obj = findObj("image1");
function findObj(theObj, theDoc){
   var p, i, foundObj;
    if(!theDoc) theDoc = document;
   if( (p = theObj.indexOf("?")) > 0 && parent.frames.length) {
       theDoc = parent.frames[theObj.substring(p+1)].document;  
       theObj = theObj.substring(0,p);
   }
   if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
   for(i=0; !foundObj && i < theDoc.forms.length; i++) foundObj = theDoc.forms[i][theObj];
   for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) foundObj = findObj(theObj,theDoc.layers[i].document);
   if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj); return foundObj;
}
//添加一个参与人填写行
function AddSignRow(){ //读取最后一行的行号,存放在txtTRLastIndex文本框中
   var txtTRLastIndex = findObj("txtTRLastIndex",document);
   var rowID = parseInt(txtTRLastIndex.value);
  
   var signFrame = findObj("SignFrame",document);
   //添加行
   var newTR = signFrame.insertRow(signFrame.rows.length);
   newTR.id = "SignItem" + rowID;
  
   //添加列:序号
   var newNameTD=newTR.insertCell(0);
   //添加列内容
   newNameTD.innerHTML = newTR.rowIndex.toString();
  
   //添加列: 姓名
   var newNameTD=newTR.insertCell(1);
   //添加列内容
   newNameTD.innerHTML = "<input name='txtName" + rowID + "' id='txtName" + rowID + "' type='text' size='12' />";
  
   //添加列:电子邮箱
   var newEmailTD=newTR.insertCell(2);
   //添加列内容
   newEmailTD.innerHTML = "<input name='txtEMail" + rowID + "' id='txtEmail" + rowID + "' type='text' size='20' />";
  
   //添加列:删除按钮
   var newDeleteTD=newTR.insertCell(3);
   //添加列内容
   newDeleteTD.innerHTML = "<div align='center' style='width:40px'><a href='javascript:;' onclick=\"DeleteSignRow('SignItem" + rowID + "')\">删除</a></div>";
  
   //将行号推进下一行
   txtTRLastIndex.value = (rowID + 1).toString() ;
}
//删除指定行
function DeleteSignRow(rowid){
   var signFrame = findObj("SignFrame",document);
   var signItem = findObj(rowid,document);
  
   //获取将要删除的行的Index
   var rowIndex = signItem.rowIndex;
  
   //删除指定Index的行
   signFrame.deleteRow(rowIndex);
  
   // 重新排列序号,如果没有序号,这一步省略
   for(i=rowIndex;i<signFrame.rows.length;i++){
      signFrame.rows[i].cells[0].innerHTML = i.toString();
   }
}//清空列表
function ClearAllSign(){
   if(confirm('确定要清空所有参与人吗?')){
          var signFrame = findObj("SignFrame",document);
          var rowscount = signFrame.rows.length;
      
          //循环删除行,从最后一行往前删除
          for(i=rowscount - 1;i > 0; i--){
           signFrame.deleteRow(i);
          }
      
          //重置最后行号为1
          var txtTRLastIndex = findObj("txtTRLastIndex",document);
          txtTRLastIndex.value = "1";
      
          //预添加一行
          AddSignRow();
   }
}
</script>
<body>
<div>
<table width="613" border="0" cellpadding="2" cellspacing="1" id="SignFrame">
    <tr id="trHeader">
      <td width="27" bgcolor="#96E0E2">序号</td>
      <td width="64" bgcolor="#96E0E2">用户姓名</td>
      <td width="98" bgcolor="#96E0E2">电子邮箱</td>
      <td width="57" align="center" bgcolor="#96E0E2">&nbsp;</td>
    </tr>
</table>
</div>
<div>
<input type="button" name="Submit" value="添加参与人" onclick="AddSignRow()" />
<input type="button" name="Submit2" value="清空" onclick="ClearAllSign()" />
<input name='txtTRLastIndex' type='hidden' id='txtTRLastIndex' value="1" />
</div>
</body>
</html>

js 增删节点的更多相关文章

  1. vue2-org-tree 基于VUE的部门组织架构组件,增删节点实现

    本文所用组件传送门:vue-org-tree 本文基于antd (其他前端组件框架操作基本都类似的: iview,elementui,boostrap-vue...) 当然,github上还有其他类似 ...

  2. JS添加节点方法与JQuery添加节点方法的比较及总结

    原生JS添加节点方法与JQuery添加节点方法的比较及总结   一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div ...

  3. Hadoop---静动态增删节点

    静动态增删节点 初始: 这是我现在的集群 重新克隆一个虚拟机: hadoop44:datanode(静态增加,删除和动态删除) hadoop55:datanode(动态hdfs添加,yarn动态增删) ...

  4. 原生JS的使用,包括jquery和原生JS获取节点、jquery和原生JS修改属性的比较

    一.前言 相比于JS这条直达终点.满是荆棘的小路,jquery无疑是康庄大道了,足够的简洁.易用给了它辉煌的地位.然而,毕竟是绕着道的插件,当小路走着走着变成大路的时候,曾经的大路也就失去了他自身的优 ...

  5. js清除节点内容(改变标签元素)

    <!DOCTYPE HTML><html> <head>        <meta http-equiv="Content-Type" c ...

  6. js创建节点及其属性

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. JS获取节点的兄弟,父级,子级元素的方法(js获取子级获取到换行与空格元素-FF)

    先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比. JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素 < ...

  8. js创建节点,小试牛刀

    实现如下的功能 非常简单的一个小训练. 思想: 1.首先创建text和一个button 代码如下. <body> <input type="text" id=&q ...

  9. js获取节点的DOM操作

    一直感觉DOM节点什么的乱七八糟的不能理解,可能博客也没办法写清楚,只能把知道的一些信息大致写下来慢慢再补充了. HTML DOM类型 Node类型 Javascript中的所有节点类型都继承自Nod ...

随机推荐

  1. 【深度学习】softmax回归——原理、one-hot编码、结构和运算、交叉熵损失

    1. softmax回归是分类问题 回归(Regression)是用于预测某个值为"多少"的问题,如房屋的价格.患者住院的天数等. 分类(Classification)不是问&qu ...

  2. 设置 SSH 命令行空闲保持会话

    楔子 使用 Mac 或 Linux 原生的命令行 ssh user@ip 方式连接 Linux 闲时会自动断开终端卡死. 为解决这个问题,查了到篇博客翻译下关键步骤记录下来.解决方式可以分服务端设置和 ...

  3. DL4J实战之二:鸢尾花分类

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Java基础之(九):循环结构

    循环结构 前面我们已经聊过了if语句,接下来我们就聊聊跟选择语句一样常用的语句:循环语句. 同样的,所有的循环语句都可以写成for语句 while循环 while循环的格式: while(布尔表达式) ...

  5. 微信小程序_快速入门01

    这段时间,嗯,大四课程已经结束了,工作也已经找到了,但是呢,到公司报道的时间还没到,哈哈,马上就开始人生的第一份工作了,怎么说确实有点期待~ 在这段时间一方面为第一份工作做各种准备,另一方面也没有停止 ...

  6. 新一代数据科学ide平台DataSpell提前发行版体验

    1 简介 PyCharm开发公司jetbrains专门面向数据科学的ide项目DataSpell在前不久发布了其EAP版本(早期预览版本),为我们带来了诸多趋于成熟的功能特性,本文就将为大家介绍其使用 ...

  7. Go语言核心36讲(Go语言进阶技术二)--学习笔记

    08 | container包中的那些容器 我们在上次讨论了数组和切片,当我们提到数组的时候,往往会想起链表.那么 Go 语言的链表是什么样的呢? Go 语言的链表实现在标准库的container/l ...

  8. python socket 基本使用

    socket通常也叫做"套接字",用于连接server client,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或应答网络请求. 就像python 处理file一样: ...

  9. 原生js-无缝滚动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 8.5(337)——树形dp

    将题目进行翻译,就是遍历二叉树算出最大权值,在遍历过程中,不能同时选择两个相连的节点. 第一种子问题的构造,是以爷爷--父亲--孙子的"三代"节点一同构造的,将最优子问题的结构定义 ...