用jQuery实现本地存储

用jQuery实现本地存储

  1. 要求:点击提交按钮,让用户输入的内容分别加入到表格对应的列表中
  2. 要求:点击每一行的删除按钮,能删除当前行
  3. 要求:刷新页面时能保留当前的页面效果(数据状态不会消失)

HTML结构

<div style="margin-bottom: 15px;">
        <input type="text" id="username" placeholder="请输入姓名">
        <input type="text" id="sex" placeholder="请输入性别">
        <input type="text" id="age" placeholder="请输入年龄">
        <input type="button" value="提交" id="btn">
    </div>
    <table border="1" width="540">
        <thead>
            <tr>
                <td>姓名</td>
                <td>性别</td>
                <td>年龄</td>
                <td>操作</td>
            </tr>
        </thead>
        <tbody>


        </tbody>
    </table>

初始化数据

 // 初始化数据的作用:清空页面存储的内容恢复到原始状态
var arr = [{
            'username': '小红',
            'sex': '女',
            'age': 24
        }, {
            'username': '小蓝',
            'sex': '男',
            'age': 24
        }]
        localStorage.setItem('data', JSON.stringify(arr))

入口函数

$(function () {
//...以下所有代码
}

按钮绑定点击事件

 $('#btn').click(function () {
                // var data = getData()
                // 绑定点击事件
                var obj = {
                    // 获取输入框中的值
                    username: $('#username').val(),
                    sex: $('#sex').val(),
                    age: $('#age').val()
                }
                // 重新获取数据
                var data = getData()
                // 重新往本地添加数据
                data.push(obj)
                // 存储数据
                setData(data)
                // 渲染到页面
                randerData()

            })

获取本地存储中的数据并把数据转成复杂的数据类型

function getData() {
                // 获取的是字符串类型,获得数据,没有数据返回为空数组
                return JSON.parse(localStorage.getItem('data')) || []
            }

存储data中的数据

function setData(data) {
                // 存储数据并把复杂数据类型转换成字符串类型
                localStorage.setItem('data', JSON.stringify(data))
            }

封装页面渲染函数

function randerData() {
                // 渲染前先清空列表
                $('tbody').empty()
                // 获取数据
                var data = getData()
                // 遍历data里面的对象元素,获取对象元素里面的值
                // item是数组里面的元素
                data.forEach(function (item, i) {
                    // 创建tr
                    var tr = '<tr><td>' + item.username + '</td><td>' + item.sex + '</td><td>' + item.age + '</td><td><a href="javascript:;">删除</a></td></tr>'
                    // 在主体的末尾中添加tr
                    $('tbody').append(tr)
                })
            }
            // 页面一打开就开始把本地存储中的数据添加上去
            randerData()

用事件委托给每个删除链接绑定点击删除事件

            // 不能直接获取a
            $('tbody').on('click', 'a', function () {
                // 移除它的祖父元素tr
                $(this).parents('tr').remove()
                // 重新获取数据
                setData(data)
                // 重新渲染
                randerData()
            })

在这里插入图片描述

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值