HTML5增加了localStorage本地存储,比以前的cookie小饼干存放的数据增多了,还是很好用的,用来存放用户信息或者做一个本地的任务清单还是绰绰有余的。
点击图片直接看具体效果。
功能:
1、如果没有数据,显示暂无数据,如果本地存储有数据,则展示数据。
2、点击添加任务按钮,进行输入框数据的校验,点击提交按钮,把输入存入本地存储中,并刷新页面,回到任务列表展示数据。
3、点击删除按钮,可以删除该条数据,并把本地存储对应的数据也删除。
核心代码:
使用了jQuery,所以要先引入jQuery。
// 1、先读取是否有数据,如果没有,则显示暂时没有数据,如果有,则罗列数据列表
// 2、点击添加任务,按钮切换
// 3、获取表单数据,追加到localStorage中,页面重新加载显示数据列表。
// 4、删除一条数据,把localStorage中对应索引的数据删除,因为数据是数组形式存放的,所以索引值要变化,就需要重新加载一次数据,更新列表的索引值
// 显示数据
showLists();
// 添加任务按钮切换
$('.nav').find('.nav-a').on('click', function () {
$(this).addClass('active').siblings().removeClass('active');
$('.container').find('.tab-content').eq($(this).index()).removeClass('none').siblings().addClass('none');
})
// 获取表单数据,追加
addLists();
// 检测输入的数据的合法性
// 因为这个版本的jquery不支持input事件,所以这里使用了原生js
const oInput = document.querySelector('#content');
oInput.addEventListener('input', function () {
let val = this.value;
console.log(val);
// 没有数据输入
if (!val.trim()) {
// 如果没有错误提示,则创建一个错误提示
if (!$('.inputbox').find('.tips').length) {
$('#content').after($('<p class="tips">不能为空啊!</p>'));
return;
}
} else {
// 如果有错误提示,则删除
if ($('.inputbox').find('.tips').length) {
$('.inputbox').find('.tips').remove();
}
}
})
function addLists() {
let dataLists = [];
$('#btn-submit').on('click', function () {
let info = $('#content').val();
let date = $('#mydate').val();
// 如果date没有数据,则提供一个默认值。
date = date || '2022-05-24';
if (!info.trim()) {
// 如果没有提示信息,则创建一个,如果有,则跳过不创建,并且不再往下执行。
if (!$('.inputbox').find('.tips').length) {
$('#content').after($('<p class="tips">不能为空啊!</p>'));
return;
}
// 只要为空,就不再往下执行
return;
}
// 有数据的时候
// 如果有提示信息,则删除
if ($('.inputbox').find('.tips').length) {
$('.inputbox').find('.tips').remove();
}
// 获取localStorage里面的数据
let data = JSON.parse(localStorage.getItem('dataLists'));
// console.log(data);
// 如果有数据,则添加到数组中保存起来
if (data) {
dataLists = data;
};
// 再追加表单里面新的数据
dataLists.push({
"content": info,
"date": date
})
// 存储到本地存储中
localStorage.setItem("dataLists", JSON.stringify(dataLists));
// 刷新页面,回到任务列表上
location.reload();
})
}
// 显示数据函数
function showLists() {
let dataLists = JSON.parse(localStorage.getItem('dataLists'));
// console.log(dataLists);
if (!dataLists || !dataLists.length) {
$('.task-ul').html(`<li><p style="text-align:center;font-size:0.875rem;color:#999">暂时没有数据!</p></li>`);
return;
}
// 有数据,则显示出来
let data = JSON.parse(localStorage.getItem('dataLists'));
let str = '';
data.forEach(function (item, index) {
str += `<li class="task-li">
<p class="task-time">${item.date}</p>
<p class="task-p">${item.content}</p>
<a href="javascript:;" class="btn-del" data-id = ${index}>删除</a>
</li>`
})
$('.task-ul').html(str);
// 删除数据
$('.btn-del').on('click', function () {
$(this).parent().remove();
let data = JSON.parse(localStorage.getItem('dataLists'));
// 获取自定义属性data-id的值
data.splice($(this).data('id'), 1);
localStorage.setItem('dataLists', JSON.stringify(data));
// 重新加载页面,就会重新去执行页面数据的显示,数据上面的data-id就会和数组保持一样的更新。
// location.reload();
showLists();
})
}
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。