<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. P3211-[HNOI2011]XOR和路径【高斯消元】

    正题 题目链接:https://www.luogu.com.cn/problem/P3211 题目大意 一个\(n\)个点\(m\)条边的无向图,从\(1\)到\(n\)随机游走.求期望路径异或和. ...

  2. gin 跨域问题

    package middlewares import ( "github.com/gin-gonic/gin" "net/http" ) func Cors() ...

  3. 使用Python写词云数据可视化

    词云的应用场景 会议记录 海报制作 PPT制作 生日表白 数据挖掘 情感分析 用户画像 微信聊天记录分析 微博情感分析 Bilibili弹幕情感分析 年终总结 安装本课程所需的Python第三方模块 ...

  4. linux版火狐浏览器部署详解

    Firefox下载地址 Firefox全历史版本下载: http://ftp.mozilla.org/pub/firefox/releases/ Firefox驱动问题下载  https://gith ...

  5. 串的模式匹配 BF算法和KMP算法

    设有主串s和子串t,子串t的定位就是要在主串中找到一个与子串t相等的子串.通常把主串s称为目标串,把子串t称为模式串,因此定位也称为模式匹配. 模式匹配成功是指在目标串s中找到一个模式串t: 不成功则 ...

  6. centos7 配置ftp服务器搭建(匿名访问,以及本地登录)

    大家好,今天来给大家分享一个基于centos 7的ftp服务器搭建 实现功能:匿名访问,本地登录 查看系统版本: [root@localhost ~]# cat /etc/redhat-release ...

  7. Scrum Meeting 13

    第13次例会报告 日期:2021年06月05日 会议主要内容概述: 团队成员均明确了下一步的目标,进度突飞猛进辣 一.进度情况 我们采用日报的形式记录每个人的具体进度,链接Home · Wiki,如下 ...

  8. BUAA_2020_软件工程_结对项目作业

    项目 内容 这个作业属于哪个课程 班级博客 这个作业的要求在哪里 作业要求 我在这个课程的目标是 掌握软件工程的思路方法 这个作业在哪个具体方面帮助我实现目标 学习结对编程 教学班级 006 项目地址 ...

  9. UVA-1498 Activation

    UVA-1498 DP应该是肯定的,设 f [ i ] [ j ] 表示现在对中共有 i 人,Tomato在第 j 个,出现所求情况的概率,我们可以很(简单的)艰难的列出下列方程: f[i][1] = ...

  10. 计算机网络传输层之TCP流量控制

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105531547 学习课程:<2019王道考研计算机网络> 学习目的 ...