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. openssl 升级操作 -2

    首先我觉得没事就用绿盟扫漏洞的公司,就是闲的蛋疼,傻逼!不少服务器使用nginx,如果openssl 是静态编译的,直接将openssl 编译到nginx里面去了,这就意味着,单纯升级openssl ...

  2. node.js的安装与第一个hello world、node.js的初始化

    1.下载node.js文件 2.windows下点击安装  重复下一步即可 3.编辑工具  EditPlus编辑器 4.新建保存目录的文件夹,并新建一个文本文档 5.打开EditPlus编辑器  打开 ...

  3. boost::asio学习(定时器)

    #include <boost/asio.hpp> #include <iostream> void handle1(const boost::system::error_co ...

  4. 【BZOJ2707】[SDOI2012]走迷宫 Tarjan+拓扑排序+高斯消元+期望

    [BZOJ2707][SDOI2012]走迷宫 Description Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,M ...

  5. 【BZOJ3073】[Pa2011]Journeys 线段树+堆优化Dijkstra

    [BZOJ3073][Pa2011]Journeys Description Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在 ...

  6. Frosh Week(归并排序求逆序数)

    H - Frosh Week Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Desc ...

  7. vip视频网站爬虫

    vip视频网站爬虫 电影网站:http://www.08ge.com/play/?make=dianying&id=fqvlYhH5QHb3Sh.html 找到<iframe>的i ...

  8. django实现密码加密的注册(数据对象插入)

    在 django实现密码非加密的注册(数据对象插入)的基础上,我们对视图和注册页面进行了简单修改 视图 from django.shortcuts import render,redirect,ren ...

  9. javafx tableview 设置多选

    id_resultTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

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

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