<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. DeepDB:Learn From Data,not from Queries!

    ABSTRACT DBMS典型学习方法的弊端:手机数据集的成本过高;工作方向或数据库发生改变时,必须重新收集数据.--------------解决:提出了一种新的数据驱动方式,直接支持工作负载和数据库 ...

  2. Chrome浏览器启动参数大全(命令行参数)

    前言 在开发Web项目当中,浏览器必不可少,而浏览器的启动参数可以帮我们实现很多功能. 常用参数 常用参数请参考下表. 序号 参数 说明 1 --allow-outdated-plugins 不停用过 ...

  3. 请求既有multipartFile,也有实体的解决方案

    上回书我们说到,我们在发文件上传请求的时候,携带数据 this.fileData.append('trainName', this.dataModel.trainName); // 添加培训名称 然后 ...

  4. Matlab 速记

    链接:https://zhuanlan.zhihu.com/p/370259237 % 1.进度提醒 f = waitbar(0,'1','Name','进度'); set(f,'color','w' ...

  5. 20 行代码:Serverless 架构下用 Python 轻松搞定图像分类和预测

    作者 | 江昱 前言 图像分类是人工智能领域的一个热门话题.通俗解释就是,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法. 它利用计算机对图像进行定量分析,把图像或图像中 ...

  6. 题解 Sue的小球/名次排序问题/方块消除/奥运物流

    Sue的小球 名次排序问题 方块消除 奥运物流 Sue的小球 题目大意 有 \(n\) 个小球在下落,初始位置 \((x_i,y_i)\),下落速度为 \(v_i\).你初始位置在 \(x_0\),速 ...

  7. Spring 框架学习

    转载自前辈:我没有三个新脏 Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (I ...

  8. 后台管理系统使用vue-element-admin搭建

    近期在搞一个会议健康申报系统时,要搞一个后台,用到了vue-element-admin模板,使用的是PanJianChen(源码地址:https://github.com/PanJiaChen/vue ...

  9. Ajax样例

    $.ajax({ url : "newsservlet",//请求地址 dataType : "json",//数据格式 type : "post&q ...

  10. Java(12)方法的重载

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201592.html 博客主页:https://www.cnblogs.com/testero ...