JS表格小案例
创建一个表单,根据表单填写内容,创建表格行内容,每行后面有删除按钮,删除后可以删除该行一个搜索文本框,输入内容,点击按钮显示当前模糊查找到所有内容,显示在表格内
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
table {
width: 800px;
border: 1px solid lightcoral;
border-collapse: collapse;
}
</style>
</head>
<body>
<input type="text" id="search" placeholder="search" />
<input type="button" value="搜索" id="find" />
<input type="text" id="name" placeholder="name" />
<input type="text" id="psd" placeholder="password" />
<input type="text" id="num" placeholder="number" />
<input type="button" value="提交" id="send" onclick="add()" />
<table id="tab">
</table>
<script type="text/javascript">
// 通过ID获取所有元素
var search = document.getElementById("search");
var find = document.getElementById("find");
var name1 = document.getElementById("name");
var psd1 = document.getElementById("psd");
var num1 = document.getElementById("num");
var send = document.getElementById("send");
var tab = document.getElementById("tab");
// 定义一个数组,用来存放所有的输入的对象
var arr = [];
function add() {
// 判断输入是否为空
if (name1.value && psd1.value && num1.value) {
// 定义对象存放输入的属性及属性值
var obj = {};
// 创建每行的tr以及删除键a
var tr = document.createElement("tr");
var aa = document.createElement("a");
aa.textContent = "Del";
tab.appendChild(tr);
// 向对象添加用户输入的属性及属性值
obj.name = name1.value;
obj.psd = psd1.value;
obj.num = num1.value;
// 遍历对象输出到每行的tr
for (var str in obj) {
var td = document.createElement("td");
td.textContent = str + " : " + obj[str];
tr.appendChild(td);
}
tr.appendChild(aa);
// 对删除键添加点击事件
aa.addEventListener("click", del);
// 创建点击事件,使tr删除
function del(e) {
e = e || window.event;
tr.remove();
}
// 每次执行后清空输入内容
name1.value = psd1.value = num1.value = "";
// 将每次的对象放入数组中
arr.push(obj);
// console.log(arr);
// 为搜索键添加监听事件
find.addEventListener("click", clickHandler);
// 新建点击函数,遍历数组,查找搜索的关键字
function clickHandler(e) {
e = e || window.event;
var str = search.value;
var data = arr.filter(function (t) {
return t.name.indexOf(str) > -1;
});
// 清空表格
tab.textContent = "";
//遍历数组对象
for (var j = 0; j < data.length; j++) {
//新建每一行
var tr = document.createElement("tr");
var aa = document.createElement("a");
aa.textContent = "Del";
tab.appendChild(tr);
//新建每行的每一项
for (var str in data[j]) {
var td = document.createElement("td");
td.textContent = str + " : " + data[j][str];
tr.appendChild(td);
}
}
}
} else {
alert("Error");
}
}
</script>
</body>
</html>