jQuery實(shí)現(xiàn)本地存儲(chǔ)
用jQuery實(shí)現(xiàn)本地存儲(chǔ),供大家參考,具體內(nèi)容如下
- 要求:點(diǎn)擊提交按鈕,讓用戶(hù)輸入的內(nèi)容分別加入到表格對(duì)應(yīng)的列表中
- 要求:點(diǎn)擊每一行的刪除按鈕,能刪除當(dāng)前行
- 要求:刷新頁(yè)面時(shí)能保留當(dāng)前的頁(yè)面效果(數(shù)據(jù)狀態(tài)不會(huì)消失)
HTML結(jié)構(gòu)
<div style="margin-bottom: 15px;">
<input type="text" id="username" placeholder="請(qǐng)輸入姓名">
<input type="text" id="sex" placeholder="請(qǐng)輸入性別">
<input type="text" id="age" placeholder="請(qǐng)輸入年齡">
<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>
初始化數(shù)據(jù)
// 初始化數(shù)據(jù)的作用:清空頁(yè)面存儲(chǔ)的內(nèi)容恢復(fù)到原始狀態(tài)
var arr = [{
'username': '小紅',
'sex': '女',
'age': 24
}, {
'username': '小藍(lán)',
'sex': '男',
'age': 24
}]
localStorage.setItem('data', JSON.stringify(arr))
入口函數(shù)
$(function () {
//...以下所有代碼
}
按鈕綁定點(diǎn)擊事件
$('#btn').click(function () {
// var data = getData()
// 綁定點(diǎn)擊事件
var obj = {
// 獲取輸入框中的值
username: $('#username').val(),
sex: $('#sex').val(),
age: $('#age').val()
}
// 重新獲取數(shù)據(jù)
var data = getData()
// 重新往本地添加數(shù)據(jù)
data.push(obj)
// 存儲(chǔ)數(shù)據(jù)
setData(data)
// 渲染到頁(yè)面
randerData()
})
獲取本地存儲(chǔ)中的數(shù)據(jù)并把數(shù)據(jù)轉(zhuǎn)成復(fù)雜的數(shù)據(jù)類(lèi)型
function getData() {
// 獲取的是字符串類(lèi)型,獲得數(shù)據(jù),沒(méi)有數(shù)據(jù)返回為空數(shù)組
return JSON.parse(localStorage.getItem('data')) || []
}
存儲(chǔ)data中的數(shù)據(jù)
function setData(data) {
// 存儲(chǔ)數(shù)據(jù)并把復(fù)雜數(shù)據(jù)類(lèi)型轉(zhuǎn)換成字符串類(lèi)型
localStorage.setItem('data', JSON.stringify(data))
}
封裝頁(yè)面渲染函數(shù)
function randerData() {
// 渲染前先清空列表
$('tbody').empty()
// 獲取數(shù)據(jù)
var data = getData()
// 遍歷data里面的對(duì)象元素,獲取對(duì)象元素里面的值
// item是數(shù)組里面的元素
data.forEach(function (item, i) {
// 創(chuàng)建tr
var tr = '<tr><td>' + item.username + '</td><td>' + item.sex + '</td><td>' + item.age + '</td><td><a href="javascript:;" rel="external nofollow" >刪除</a></td></tr>'
// 在主體的末尾中添加tr
$('tbody').append(tr)
})
}
// 頁(yè)面一打開(kāi)就開(kāi)始把本地存儲(chǔ)中的數(shù)據(jù)添加上去
randerData()
用事件委托給每個(gè)刪除鏈接綁定點(diǎn)擊刪除事件
// 不能直接獲取a
$('tbody').on('click', 'a', function () {
// 移除它的祖父元素tr
$(this).parents('tr').remove()
// 重新獲取數(shù)據(jù)
setData(data)
// 重新渲染
randerData()
})

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery實(shí)現(xiàn)移動(dòng)端筆觸canvas電子簽名
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)移動(dòng)端筆觸canvas電子簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
基于jquery實(shí)現(xiàn)的自動(dòng)補(bǔ)全功能
這篇文章主要介紹了基于jquery實(shí)現(xiàn)的自動(dòng)補(bǔ)全功能的方法,涉及jQuery操作數(shù)據(jù)實(shí)現(xiàn)補(bǔ)全的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
利用jquery正則表達(dá)式在頁(yè)面驗(yàn)證url網(wǎng)址輸入是否正確
這篇文章主要介紹了關(guān)于利用jquery正則表達(dá)式在頁(yè)面驗(yàn)證url網(wǎng)址輸入是否正確的相關(guān)資料,文中給出了完整的示例代碼,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04
ASP.NET jQuery 實(shí)例18 通過(guò)使用jQuery validation插件校驗(yàn)DropDownList
這節(jié)我們還可以通過(guò)直接設(shè)置DropDownList屬性來(lái)設(shè)置jQuery validation插件的校驗(yàn)規(guī)則和提示信息2012-02-02
jQuery入門(mén)之層次選擇器實(shí)例簡(jiǎn)析
這篇文章主要介紹了jQuery入門(mén)之層次選擇器用法,以簡(jiǎn)單實(shí)例形式分析了jQuery層次選擇器中ancestor descendant與parent>child的區(qū)別,需要的朋友可以參考下2015-12-12
jQuery動(dòng)態(tài)產(chǎn)生select option下拉列表
這篇文章主要介紹了jQuery動(dòng)態(tài)產(chǎn)生select option下拉列表的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-03-03
jQuery實(shí)現(xiàn)動(dòng)態(tài)生成年月日級(jí)聯(lián)下拉列表示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)生成年月日級(jí)聯(lián)下拉列表,結(jié)合具體實(shí)例形式分析了jQuery日期時(shí)間運(yùn)算構(gòu)造級(jí)聯(lián)下拉列表相關(guān)操作技巧,需要的朋友可以參考下2019-05-05

