增删改查+js练习+es6字符串模板@haloBabyBear

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>todos</title>
<style>
*{
margin:0;
padding:0;
} #content{
position:absolute;
top:50%;
left:50%;
transform:translate(-200px,-200px);
} #input{
width:395px;
height: 30px;
margin-bottom:10px;
}
#infoBox{
width:400px;
height:300px;
border:1px solid #000;
}
ul{
list-style-type: none;
}
.hide{
display: none;
}
</style>
</head>
<body>
<div id="content">
<input type="text" id="input"/>
<ul id="infoBox">
</ul>
</div>
<script src="todos.js"></script>
</body>
</html>
 /**
*
*/
var data = [{"name":"item1","id":11},{"name":"item2","id":22}];
var input = document.getElementById("input");
var info =document.getElementById("infoBox");
//li对象
var lis = document.getElementsByTagName('li');
var txtName = document.getElementsByClassName("txtName");
var editInput = document.getElementsByClassName("editInput"); //初始化数据,及添加时调用
function init(data){
var fragment = document.createDocumentFragment(); data.forEach(function aa(item){
var li = document.createElement("li");
li.innerHTML = `<span class="txtName" data-id="${item.id}" data-name="${item.name}" ondblclick="edit(${item.id})">${item.name}</span>
<input class="editInput hide" type="text" value="${item.name}" onblur="editFinished(${item.id})"/>
<span data-id="${item.id}" style='float:right;cursor: pointer' onclick='remove(${item.id})'>X</span>`;
// li.setAttribute("data-id",item.id);
li.style ="margin-top:10px";
fragment.appendChild(li);
}); info.appendChild(fragment);
}
//页面加载好加载数据
window.onload = init(data); function remove(id){
for(var i=0;i<lis.length;i++){
if(lis[i] != null){
//删除元素 元素.parentNode.removeChild(元素);
if (lis[i].childNodes[4].dataset.id == id +"")
lis[i].parentNode.removeChild( lis[i]);
}
}
} function add(){
var idNum = Math.floor(100*Math.random());
//设置新的数组,数组长度一直为1
var newElement = [];//清空
newElement.push({"name":input.value,id:idNum});
data.push({"name":input.value,id:idNum});//infoBox中渲染的数据中添加新数据
init(newElement);//添加新数据
console.log(data);
return data;//返回所有数据
} //编辑
function edit(id){
for(var i=0;i<txtName.length;i++){
if(txtName[i].dataset.id == id + ""){
txtName[i].className = "txtName hide";
editInput[i].className = "editInput";
} }
} //编辑成功
function editFinished(id){
for(var i=0;i<txtName.length;i++){
if(txtName[i].dataset.id == id + ""){
var temp = txtName[i].dataset.name;
if (editInput[i].value === ''){
txtName[i].className = "txtName";
editInput[i].className = "editInput hide";
txtName[i].innerHTML = temp;
alert("为空时不改变");
}
else{
txtName[i].className = "txtName";
editInput[i].className = "editInput hide";
txtName[i].innerHTML = editInput[i].value;
alert("编辑成功");
}
}
}
} input.addEventListener('keydown', function(ev) {
//按键为回车键时执行
if (ev.keyCode === 13) {
//输入为空时不执行添加操作
if (input.value === '') return;
//添加数据
add();
//清空数据
input.value = '';
}
else {
//延时搜索
setTimeout(function() {
search(input.value);
}, 10)
}
}); function search($str){
for(var i=0;i<txtName.length;i++){
//ig全局匹配,不区分大小写
var reg = new RegExp("(" + $str + ")", "ig");
var temp = txtName[i].dataset.name;
//$1指原始字符串
//高亮要查找的字符串
temp = temp.replace(reg,"<span style='color:red'>$1</span>");
txtName[i].innerHTML = temp;
}
}

最新文章

  1. (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
  2. 配置文件的生成,关于“make menuconfig”
  3. Linux网络编程系列-套接口选项控制
  4. ecshop后台,listtable.js使用
  5. 数学 Codeforces Round #291 (Div. 2) B. Han Solo and Lazer Gun
  6. UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xe9 in position 0: ordinal not in range(128) 解决办法
  7. 在线最优化求解(Online Optimization)之二:截断梯度法(TG)
  8. Mac OS 踩坑指南
  9. Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)
  10. spring中注解事务认识
  11. 【Stage3D学习笔记续】真正的3D世界(六):空间大战
  12. ios 解决有关火星坐标的问题
  13. msyql存储数据时字段被截断
  14. 《学习之道》第八章孤军奋战or组队合作
  15. Python title()、upper()、lower()方法--string
  16. Java中判断对象是否为空的方法
  17. Luogu4622 COCI2012-2013#6 JEDAN 组合、DP
  18. SDRAM 学习笔记(三)
  19. 【F12】Console命令,让js调试更简单
  20. 使用PopupWindow弹窗提醒

热门文章

  1. MySQL 必知必会学习笔记(常用命令一)
  2. 使用飞冰组件关于点击行回填在input内(React)
  3. echarts折线图
  4. Thread类源码解析
  5. 自定义Hook
  6. 第九周学习笔记-ADO.Net中DataSet的应用
  7. Mantis:Mantis rest api url 404 Not Found.解决过程纪录
  8. mysql无法安装,报 The older version of MySQL Installer - Community cannot be removed. Contact your technical support group
  9. php的array数组 -------方法foreach循环时候,利用数组里值的引用地址(&amp; )从而改变数组里的值
  10. javascript 使用数组+循环+条件实现数字转换为汉字的简单方法。