国产精品一区二区三区……-大杳蕉伊人欧美一本遒在饯-日本不卡一区免费在线观看-国产亚洲欧美中文字幕

400-800-9385
網(wǎng)站建設(shè)資訊詳細(xì)

使用localStorage制作歷史搜索記錄

發(fā)表日期:2022-05-25 17:17:20   作者來源:黎云輝   瀏覽:1631   標(biāo)簽:網(wǎng)站建設(shè)    
localStorag是在HTML5中,新加入的一個(gè)特性,localStorage主要是用來作為本地存儲(chǔ)來使用的,用來解決cookie存儲(chǔ)空間不足的問題,因?yàn)閏ookie中每條cookie的存儲(chǔ)空間為4k,但是localStorage在一般瀏覽器中支持的是5M大小,這個(gè)大小在不同的瀏覽器中會(huì)有所不同。
localStorage的優(yōu)勢是拓展了cookie的4K限制,localStorage會(huì)可以將第一次請求的數(shù)據(jù)直接存儲(chǔ)到本地,這個(gè)相當(dāng)于一個(gè)5M大小的針對于前端頁面的數(shù)據(jù)庫,相比于cookie可以節(jié)約帶寬,但是局限性是只有在IE8以上的IE版本才支持localStorage這個(gè)屬性。目前所有的瀏覽器中都會(huì)把localStorage的值類型限定為string類型,所以在使用時(shí),需要把string類型轉(zhuǎn)成我們常用的JSON數(shù)組對象類型。localStorage在瀏覽器的隱私模式下是不可讀取的,localStorage本質(zhì)上是對字符串的讀取,如果存儲(chǔ)內(nèi)容多的話會(huì)消耗內(nèi)存空間,會(huì)導(dǎo)致頁面變卡,所以需要控制存儲(chǔ)的數(shù)據(jù)量,或者清除存儲(chǔ)數(shù)據(jù)。localStorage不能被爬蟲抓取到,從一定程度上保護(hù)了用戶個(gè)人隱私。
以下是使用展示

input

 

因?yàn)槲宜阉骺蚺c展示搜索結(jié)果記錄的頁面是分開的,所以我這邊是先把搜索值傳遞到后臺(tái),然后再傳到前端。

JS代碼

然后就能得到以下的歷史搜索記錄列表

搜索列表

根據(jù)網(wǎng)站的需求,我這邊還加上了刪除單條歷史搜索記錄,清除所有歷史搜索記錄以及根據(jù)歷史搜索記錄再查詢功能。

JS
 
以下貼具體代碼:
前端代碼:

html

<div class="orderlist">
<ul id="keyname">
</ul>
<div class="btn">
<input type="button" id="Clear" onclick="DeletaAll()" value="Clear" class="b1" />
<input type="button" id="Track" onclick="Track()" value="Track" class="b2"/>
</div>
</div>
Javascript代碼:
JS代碼
<script>
var searchArr;
//定義一個(gè)search用來存儲(chǔ)搜索記錄的,判斷瀏覽器有無數(shù)據(jù)存儲(chǔ)(搜索歷史)
if(localStorage.search){
//如果有,則把搜索記錄轉(zhuǎn)成數(shù)組的形式存放到searchArr的數(shù)組里(localStorage以字符串的形式存儲(chǔ),所以要把它轉(zhuǎn)換成數(shù)組的形式)
searchArr= localStorage.search.split(",")
}else{
//如果沒有,則定義searchArr為一個(gè)空的數(shù)組
searchArr = [];
}
// console.log(searchArr);
//把存儲(chǔ)的數(shù)據(jù)顯示出來作為搜索歷史
MapSearchArr();
$(function(){
var val = '{$trackNo}';//接收從后臺(tái)傳來的搜索值
if(val!=''){
//判斷搜索值是否已重復(fù),如果重復(fù)就去重
KillRepeat(val);
//去重后把數(shù)組存儲(chǔ)到瀏覽器localStorage
localStorage.search = searchArr;
//然后再把搜索內(nèi)容顯示出來
MapSearchArr();
}
});
function MapSearchArr(){
var tmpHtml = "";
for (var i=0;i<searchArr.length;i++){
var n = i+1;
tmpHtml += "<li onclick='Choose(this)'><div class='t1'>"+n+".</div><div class='t2'>"+searchArr[i]+"</div><div class='ic' onclick='Del(this)'></div></li>"
}
$("#keyname").html(tmpHtml);
}
//去重
function KillRepeat(val){
var kill = 0;
for (var i=0;i<searchArr.length;i++){
if(val===searchArr[i]){
kill ++;
}
}
if(kill<1){
searchArr.push(val);
}
}
//刪除搜索記錄
function Del(obj){
var n = $(obj).prev().text();
DeleteArr(n);
}
//刪除
function DeleteArr(val){
for (var i=0;i<searchArr.length;i++){
if(val==searchArr[i]){
searchArr.splice(i,1);
}
}
if(searchArr.length==0){
DeletaAll();
}else{
localStorage.search = searchArr;
window.location.reload();
}
}
//刪除所有的搜索記錄
function DeletaAll(){
localStorage.clear();
window.location.href="{:urlrotue('Search/index2')}";
}
function Choose(obj){
$(obj).addClass('on').siblings().removeClass('on');
}
//點(diǎn)擊搜索記錄進(jìn)行查詢
function Track(){
var trackno = $(".on").children('.t2').text();
window.location.href = "{:urlrotue('Search/index2')}?trackNo="+ trackno;
}
</script>
 
 
 
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://pdcharm.com/news/6430.html
舞钢市| 金门县| 错那县| 垫江县| 汉川市| 吴堡县| 赤峰市| 朝阳县| 汝州市| 汝州市| 汝州市| 辽宁省| 北宁市| 长宁区| 邮箱| 清流县| 辽宁省| 藁城市| 肇庆市| 政和县| 买车| 聂拉木县| 玛多县| 乐至县| 东山县| 成都市| 栾城县| 巨野县| 离岛区| 新沂市| 桂平市| 轮台县| 正蓝旗| 阿拉善盟| 泸州市| 宜川县| 吴忠市| 桑日县| 山东| 大兴区| 巴中市|