demo.ts

// DataHelpler 类 用于操作localStorage
class DataHelpler {
dataKey: string; //localstorage key
primaryKey: string; // id constructor(dataKey: string, primaryKey: string) {
this.dataKey = dataKey
this.primaryKey = primaryKey
} // [{content:'3333', id :1},{content:'3333', id :1}]
// 读取本地数据
readData(): any {
let pinglunStr: string | null = localStorage.getItem(this.dataKey)
let pinglunArr: any = []; // 这一定要给默认值
if (pinglunStr) {
pinglunArr = JSON.parse(pinglunStr)
}
return pinglunArr
}

// 存本地数据
saveData(pinglunArr: object[] ): void {
let pinglunStr: string = JSON.stringify(pinglunArr)
localStorage.setItem(this.dataKey, pinglunStr)
}

// 新增本地数据
add(pinglunValue: string): number {
// 1.先取值
let Data: any = this.readData()
// 2.评论对象
let obj:any = {
content: pinglunValue
}
// 3.自动生成primaryKey obj[this.primaryKey]
// 拿到本地存储中最后一个值的primaryKey +1
let newId: number = Data.length > 0 ? Data[Data.length -1][this.primaryKey] + 1 : 1;
// 4. 将primaryKey 值 存到obj
obj[this.primaryKey] = newId
Data.push(obj)
this.saveData(Data)
return newId
}

// 删除
remove(ID: number | string): boolean {
debugger
// 1.先取值
let Data: any = this.readData()
// 2.遍历Data
let Index :number = Data.findIndex((item:any) =>item[this.primaryKey] == ID)
if(Index !== -1) {
Data.splice(Index, 1)
this.saveData(Data)
return true
}
return false
}
}

demo.html

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.neirong,
.pinglun,
.addpinglun {
border: 1px solid #000;
}
</style> <body style="width:50%;margin: 10px auto">
<div class="neirong">
<p>文章内容哈哈哈哈红红火火恍恍惚惚红红火火恍恍惚惚红红火火恍恍惚惚</p>
</div>
<div class="pinglun">
<ul id="ul">
<!-- <li>评论1112323 <span style="float:right;margin-right:30px;">删除</span> </li> -->
</ul>
</div>
<div class="addpinglun">
<textarea name="" id="textarea" cols="70" rows="10"></textarea>
<button id="add">新增评论</button>
</div>
</body>
<script src="./js/demo.js"></script>
<script>
let dh = new DataHelpler('plData', 'id') window.onload = function () {
init()
} // 渲染评论列表
function init() {
let data = dh.readData()
let str = ''
if (data) {
data.forEach(item => {
str += `
<li>${item.content} <span data-id="${item.id}" onclick="del(this)" style="float:right;margin-right:30px;cursor:pointer;">删除</span> </li>
`
});
} else {
str += `
<li> 暂无数据 </li>
`
}
document.querySelector('#ul').innerHTML = str
} // 新增
document.querySelector('#add').onclick = function () {
dh.add(document.querySelector('#textarea').value)
init()
document.querySelector('#textarea').value = ''
} // 删除功能
function del(element) {
dh.remove(element.getAttribute("data-id"))
init()
} </script> </html>

效果图

最新文章

  1. AutoFac在项目中的应用
  2. java之初识服务器跨域获取数据
  3. 《Spring 3.0就这么简单》 读书笔记
  4. ORACLE 全局索引和本地索引
  5. NSMutableParagraphStyle /NSParagraphStyle
  6. PopupWindow源码分析
  7. 2015第29周二AOP
  8. js获取菲波那契数列的第N个元素
  9. Python3常用网络编程模块介绍
  10. 8.2.1 UML, 组合和聚合、关联和依赖
  11. 【微信小程序】rpx尺寸单位的应用
  12. 范围for循环
  13. Python之Beautiful Soup的用法
  14. Shell-2--输入输出重定向
  15. [No000015C]计算机科学关键领域
  16. Query to find the eligible indexes for rebuilding
  17. 百度地图的demo提示key验证错误!错误码:230;
  18. 黑马程序员_java基础笔记(04)...多线程
  19. SpringBoot优化内嵌的Tomcat ---设置MaxConnections
  20. HDFS--Hadoop分布式文件系统

热门文章

  1. 【转载】VUE入门教程
  2. 从Spring中学到的【2】--容器类
  3. python进阶之路14 之函数内置方法、可迭代对象、异常捕获处理
  4. 【RocketMQ】负载均衡源码分析
  5. 02-Sed语法介绍
  6. 浅谈RMQ问题
  7. 图文并茂的学习笔记--微信小程序自定义tabbar
  8. Codeforces Round #601 (Div. 2) A-E
  9. continue语句-死循环
  10. 为什么要使用 chmod 777