工作中搜索页面搜索记录功能的封装(存储到本地)

时间:2021-08-23 21:56:16
//!*封装添加搜索记录功能  (newRecord:str,当参数为空时为获取历史记录; num:记录数,默认为12条;)
function addHisRecord(newRecord, num){
num
= num || 12;
//获取本地存储的记录
var hisRecord_str = window.localStorage.getItem('hisRecord_str');
//当获取到的值为null时,创建一个空数组存储进去
if(typeof hisRecord_str == 'object'){
var hisRecord = [];
hisRecord_str
= hisRecord.join('|');
window.localStorage.setItem(
'hisRecord_str', hisRecord_str);
}
//转换为数组
hisRecord = hisRecord_str.split('|');
//当hisRecord_str为空字符串时,清空数组
if( !hisRecord_str ){
hisRecord.pop();
}
//当实参不为空时,判断:
if( newRecord ){
//1.当该数组中不存在传进来的值时,则添加新记录到首位;
if( hisRecord.indexOf(newRecord) == -1 ){
hisRecord.unshift(newRecord);
//当记录小于 num 条时,添加到首位,当大于等于 num 条时,添加到首位并删掉末位
if( hisRecord.length > num ){
hisRecord.pop();
}
}
else{
//2.当该数组中存在传进来的值时,则删掉对应位置的记录并添加新记录到首位;
var indexRecord = hisRecord.indexOf(newRecord);
hisRecord.splice( indexRecord,
1);
hisRecord.unshift(newRecord);
}
//重新转换成string存储到本地
hisRecord_str = hisRecord.join('|');
window.localStorage.setItem(
'hisRecord_str', hisRecord_str);
}
else{//当实参为空时,返回获取到的历史记录,type: Array;
return hisRecord;
}
}
//!*封装删除搜索记录功能  (index: 0,1,2,...,'all';)
function removeHisRecord(index){
//获取本地存储的记录
var hisRecord_str = window.localStorage.getItem('hisRecord_str');
//转换为数组
var hisRecord = hisRecord_str.split('|');
//当hisRecord_str为空字符串时,清空数组
if( !hisRecord_str ){
hisRecord.pop();
}
else if( index == 'all'){
hisRecord.splice(
0, hisRecord.length);
}
else {
hisRecord.splice(index,
1);
}
//将处理过的数据存储并渲染到页面
hisRecord_str = hisRecord.join('|');
window.localStorage.setItem(
'hisRecord_str', hisRecord_str);
hideOrShowHisRecord(hisRecord_str);
//隐藏历史记录部分
//template_data(hisRecord, '#search-item-tmpl3', '#searchBox3');
}
//!*封装进入页面时查询并渲染搜索记录功能
function hisRecord(){
var hisRecord = addHisRecord();
var hisRecord_str = hisRecord.join();
//记录存在时渲染
if( hisRecord_str ){
template_data(hisRecord,
'#search-item-tmpl1', '#searchBox1');
}
//hideOrShowHisRecord( hisRecord_str );//控制显示与隐藏
}

 

//根据模板,渲染数据到页面(data:待渲染的数据,template:模板,box:待渲染的盒子)
//需要引入dot.js模板引擎
function template_data(data, template, box){
var searchItemTmpl = doT.template($(template).html());
$(box).html(searchItemTmpl(data));
}