html代码

<h1>动态添加和删除标签</h1>
<div id="addTagTest">
<table>
<thead><tr><th>姓名</th><th>年薪</th><th>操作</th></tr></thead>
<tbody id="info"> </tbody>
</table>
姓名:<input type="text" name="userName" id="userName" value="" /><br>
年薪<input type="text" name="money" id="money" value="" /><br>
<button id="add" onclick="addTag()">添加记录</button>
</div>

js代码:

第一种:动态添加和删除

function addTag(){
//获取值
var userName=document.getElementById("userName").value;
var money=document.getElementById("money").value;
//创建元素
var tr=document.createElement("tr");
var td1=document.createElement("td");
var td2=document.createElement("td");
var td3=document.createElement("td");
var a=document.createElement("a");
//为元素的属性赋值
td1.innerHTML=userName;
td1.setAttribute("align","center");
td2.innerHTML=money;
td2.setAttribute("align","center");
td3.setAttribute("align","center");
a.innerHTML="删除";
a.setAttribute("onclick","delRow(this)");
//添加到页面中
var info = document.getElementById("info");
info.appendChild(tr);
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
td3.appendChild(a);
}
//删除方法
function delRow(o){
//获取父元素
var info = document.getElementById("info");
//根据节点获取当前行
var rowIndex = o.parentNode.parentNode.rowIndex;
//删除一行
info.deleteRow(rowIndex-1);
}

第二种:动态添加和删除(js集合)

var list=[];//声明一个集合
function addTag(){
var userName=document.getElementById("userName").value;
var money=document.getElementById("money").value;
var obj=new Object();
obj.name=userName;
obj.money=money;
list.push(obj); //对象放入集合
var info = document.getElementById("info");
var inner="";
//动态添加元素
for(i=0;i<list.length;i++){
inner+="<tr>";
inner+='<td align=\"center\">'+list[i].name+'</td><td align=\"center\">'+list[i].money+
'</td><td align=\"center\"><a name=\"'+i+'\" onclick=\"functiondel(this)\">'+"删除"+'</a></td>';
inner+="</tr>";
}
info.innerHTML=inner;
}
//删除方法
function functiondel(o){
var stack=[];//声明一个临时栈
var index=o.name;
for(k=list.length-1;k>=0;k--){
if(k>index){
stack.push(list[k]);
list.pop();
}
else{
list.pop();
break;
}
}
for(m=stack.length-1;m>=0;m--){
list.push(stack[m]);
}
var info = document.getElementById("info");
var inner="";
for(i=0;i<list.length;i++){
inner+="<tr>";
inner+='<td align=\"center\">'+list[i].name+'</td><td align=\"center\">'+list[i].money+
'</td><td align=\"center\"><a name=\"'+i+'\" onclick=\"functiondel(this)\">'+"删除"+'</a></td>';
inner+="</tr>";
}
info.innerHTML=inner;
}

js动态添加和删除标签的更多相关文章

  1. 原生JS动态添加和删除类

    原生JS动态添加和删除类 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等 ...

  2. jquery-ui-bootstrap动态添加和删除标签页封装【效果更炫】

    1.效果图 2.导入js和css <link rel="stylesheet" href="css/bootstrap/css/bootstrap.min.css& ...

  3. js动态添加和删除table的行例子

    <table id="table_report" class="table table-striped table-bordered table-hover&quo ...

  4. 使用js页面添加或删除标签

    // 添加var container = document.getElementById('divAudio');container.appendChild(audio); // 删除var cont ...

  5. js进阶 9-11 select选项框如何动态添加和删除元素

    js进阶 9-11 select选项框如何动态添加和删除元素 一.总结 一句话总结: 二.js进阶 9-11 select选项框如何动态添加和删除元素 1.案例说明 2.相关知识 Select 下拉列 ...

  6. JS实现动态添加和删除div

    实现方式一:只在最后一个数据中动态添加或者删除 | 背景需要做一个页面,页面可以输入参数,点击确认按钮可以发请求给某接口.但是接口的某个字段是数组类型,所以在页面上需要实现添加或者删除元素的功能. | ...

  7. form表单 无法提交js动态添加的表单元素问题。。

    第一种情况, 这种情况js动态添加的表单元素是不能提交到服务器端的 <table> <form method="post" action=" url   ...

  8. jquery 动态添加和删除 ul li列表

    今天需要实现一个jquery动态添加和删除  ul li列表中的li行,自己简单的实现乐一个,分享一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  9. js 动态添加表单 table tr

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

随机推荐

  1. 【转】linux 中fork()函数详解

    在看多线程的时候看到了这个函数,于是学习了下,下面文章写的通俗易懂,于是就开心的看完了,最后还是很愉快的算出了他最后一个问题. linux 中fork()函数详解 一.fork入门知识 一个进程,包括 ...

  2. 【BZOJ1880】[Sdoi2009]Elaxia的路线 最短路+DP

    [BZOJ1880][Sdoi2009]Elaxia的路线 Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起 ...

  3. EasyNVR摄像机无插件直播进行摄像机云台控制的接入及调用详解

    EasyNVR云台接入及控制详解 摄像机云台控制在摄像机当中很常见摄像机能将当前状态下云台的水平角度.倾斜角度和摄像机镜头焦距等位置参数存储到设备中,需要时可以迅速调用这些参数并将云台和摄像头调整至该 ...

  4. 关于jquery的取消阻止默认事件

    最近帮朋友做个东西,整个屏幕有一个遮罩层,但是这个遮罩层能滑动,于是百度了一下,返现,用 $('body').bind("touchmove",function(e){ e.pre ...

  5. 巨蟒python全栈开发django1:自定义框架

    今日大纲: 1.val和text方法的补充 2.信息收集卡用bootstrap实现 3.自定义web框架 4.http协议 5.自定义web框架2 今日内容详解: 1.val和text方法的补充 ht ...

  6. D3D9和OpenGL加载纹理图片的API是哪个?

    D3D9 创建一个空纹理,当返回 S_OK 且 ppTexture 纹理对象指针不为 NULL 时,则表示该函数调用成功. HRESULT D3DXCreateTexture( _In_  LPDIR ...

  7. 介绍一下Python中webbrowser的用法?

    webbrowser模块提供了一个高级接口来显示基于Web的文档,大部分情况下只需要简单的调用open()方法.webbrowser定义了如下的异常:exception webbrowser.Erro ...

  8. Python3.6全栈开发实例[013]

    13.用户输入的信息,如果出现了列表中的敏感词汇,请用*替代. li = ["苍老师","东京热","武藤兰","波多野结衣&qu ...

  9. JS中原型链的理解

    new操作符具体干了什么呢?其实很简单,就干了三件事情. var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj); 第一行,我们创建了 ...

  10. vim tabs

    :tabnew 增加一个标签:tabc 关闭当前的tab:tabo 关闭所有其他的tab:tabs 查看所有打开的tab:tabp 或gT 前一个:tabn 或gt 后一个:tabfirst或:tab ...