`

使用localStorage实现历史记录搜索功能

    博客分类:
  • js
阅读更多

搜索功能在商品很多的时候尤为重要,那为什么要历史记录呢,是在乎用户的感受,节约用户思路和操作的时候而产生的一项新的功能,那我们就来讨论一些历史记录是怎么实现的?

 

首先我们来对比一下localStorage和sessionStorage:

localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。

sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。

不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息

 

由此看来localStorage更加适合我们做历史记录,即使用户关闭浏览器操作,下次进来依旧存在。

 

localStorage的操作也是极其简单的:

// Save data to the current local store
localStorage.setItem("username", "John");

// Access some stored data
alert( "username = " + localStorage.getItem("username"));


// 或者直接对象操作:
localStorage.historyItems = '历史记录';

console.log(localStorage.historyItems) // 历史记录

 

搜索历史记录展现形式:


V1版:

// 当为空的时候设置一个关键字进去,判断如果关键字是否存在,不存在就追加新的关键字
setHistoryItems(keyword) {
    let { historyItems } = localStorage;
    if (historyItems === undefined) {
      localStorage.historyItems = keyword;
    } else {
      const isNotExists = historyItems.split('|').filter((e) => e == keyword).length == 0;
      if (isNotExists) localStorage.historyItems += '|' + keyword;
    }
}

 

 

V2版:

// 判断关键字是否存在,存在就移除添加在首位
setHistoryItems(keyword) {
    let { historyItems } = localStorage;
    if (historyItems === undefined) {
      localStorage.historyItems = keyword;
    } else {
      let historyItems = historyItems.split('|');
      const isExists = historyItems.filter(e => e == keyword).length > 0;
      if (isExists) {
        historyItems = keyword + '|' + historyItems.filter(e => e != keyword).join('|');
      } else {
        historyItems += '|' + keyword;
      }
      localStorage.historyItems = historyItems;
    }
}

 

 

终极版:

// 不管关键字是否存在都移除,新的关键字添加在首位
setHistoryItems(keyword) {
    let { historyItems } = localStorage;
    if (historyItems === undefined) {
      localStorage.historyItems = keyword;
    } else {
      historyItems = keyword + '|' + historyItems.split('|').filter(e => e != keyword).join('|');
      localStorage.historyItems = historyItems;
    }
}

 

再次更正版:解决只有一个关键字历史记录出现空记录

// 过滤一个结果的空记录添加,过滤空搜索
setHistoryItems(keyword) {
    keyword = keyword.trim();
    let { historyItems } = localStorage;
    if (historyItems === undefined) {
      localStorage.historyItems = keyword;
    } else {
      const onlyItem = historyItems.split('|').filter(e => e != keyword);
      if (onlyItem.length > 0) historyItems = keyword + '|' + onlyItem.join('|');
      localStorage.historyItems = historyItems;
    }
  }

 

 

 

清除历史记录关键字:

clearHistory() {
    localStorage.removeItem('historyItems'); 
}

 


更多实例应用扫码体验:

 

  • 大小: 24.1 KB
分享到:
评论

相关推荐

    localstorage搜索框记住历史记录功能

    综上所述,通过合理利用`localStorage`,我们可以轻松地实现搜索框记住历史记录的功能,提升用户的使用体验。这个功能不仅适用于搜索框,还可以应用于其他需要保存用户交互历史的场景,如输入提示、最近访问记录等。...

    弹出自定义搜索带历史记录

    在IT行业中,自定义搜索框和历史记录功能是提高用户体验和效率的重要工具。...这个例子对于初学者来说是一个很好的实践项目,通过它你可以深入理解自定义搜索框和历史记录功能的实现,并提升自己的编程技能。

    localstorage实现带过期时间的缓存功能

    在前端开发中,为了优化网页性能,降低对服务器的请求频率,通常会使用浏览器提供的缓存机制。在本文中,我们将重点关注如何...同时,这种策略也可以应用于其他需要本地缓存的场景,例如存储用户配置、搜索历史记录等。

    Vue 实现输入框新增搜索历史记录功能

    在本文中,我们将深入探讨如何在Vue框架中实现一个搜索输入框功能,此功能将能够记录用户的搜索历史,并能够将这些历史记录显示给用户,同时提供清除历史记录的选项。为达成此功能,我们将采用一个名为good-storage...

    Element输入框带历史查询记录的实现示例

    页面的查询框增加一下显示历史查找记录 实现及踩坑记录 使用Element带输入建议的输入框来实现此需求。用法详见官网 1. 坑1:不能直接在querySearch里返回数组,一定要调用回调函数cb来处理数据 看了一下例子,建议...

    使用JS location实现搜索框历史记录功能

    在本例中,我们利用`location`对象来实现搜索框的历史记录功能,不过实际上并没有直接使用`location`对象,而是通过`localStorage`来存储用户的搜索历史。`localStorage`是HTML5提供的一个特性,它允许我们在用户...

    封装历史搜索记录功能 & 样式的搜索框.

    1. **存储**:历史记录需要被持久化存储,以便用户在下一次使用时能够访问。这可能通过数据库、本地存储(如Web的localStorage或App的SQLite)或者简单的文本文件实现。 2. **加载**:当用户打开搜索框时,系统应该...

    jQuery mobile带历史记录的仿谷歌搜索

    在这个主题“jQuery mobile带历史记录的仿谷歌搜索”中,我们将深入探讨如何使用jQuery Mobile创建一个具有类似谷歌搜索功能的页面,同时利用其内置的历史管理功能,实现用户浏览历史的记录和回溯。 首先,jQuery ...

    html5带计算记录功能计算器在线计算代码

    如果需要,还可以增加清空历史记录的功能,或者提供搜索历史记录的选项。 在实际的开发过程中,良好的代码结构和模块化设计是关键。可能使用函数来封装每个功能,如“获取输入”、“执行计算”、“保存记录”和...

    jQuery搜索框历史记录保存清除代码.zip

    本资源“jQuery搜索框历史记录保存清除代码”提供了一种实现方式,帮助开发者在用户输入搜索关键词时,记录并展示搜索历史,同时提供了清除历史的功能。下面我们将详细探讨这一功能的实现原理及相关的编程知识点。 ...

    仿百度jsonp写的历史记录和搜索框

    在JavaScript开发中,"仿百度jsonp写的历史记录和搜索框"是一个常见的应用场景,它涉及到前端交互、历史数据存储以及搜索功能的实现。JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签...

    【JavaScript源代码】jquery插件实现搜索历史.docx

    搜索历史数据通过localStorage持久化,使得用户在下次访问时仍然可以看到之前的历史记录。 总结来说,这个jQuery插件实现了以下功能: 1. 监听输入框的焦点和输入事件,动态展示搜索历史。 2. 使用localStorage存储...

    jQuery文字记录搜索历史代码.zip

    本项目“jQuery文字记录搜索历史代码”利用jQuery结合HTML5的localStorage API,实现了用户在搜索框输入文字时,记录并展示搜索历史的功能。这个功能在很多网站和应用中都很常见,比如搜索引擎或者电商网站,它能够...

    a到z索引滑动城市选择带历史记录

    实现历史记录功能需要在本地存储(如浏览器的localStorage或应用的数据库)中记录用户的操作历史,并在页面加载时读取这些数据,显示在历史记录列表中。此外,还需要提供清除历史记录的选项,以保护用户隐私。 再来...

    一个涵盖所有搜索功能的搜索框

    "搜索历史记录"功能则需要存储和管理用户的搜索历史,以便用户快速访问之前搜索过的内容。这通常需要用到本地存储技术,如浏览器的localStorage或sessionStorage,或者是服务器端的数据库。同时,限制最多显示10条...

    jQuery关键词搜索历史记录代码

    这个项目的核心功能是利用浏览器的本地存储机制(通常是localStorage或sessionStorage)来保存用户的搜索历史记录。本地存储是Web Storage API的一部分,允许网页在用户浏览器中存储数据,即使关闭浏览器后数据仍然...

    searchHistory-master.zip

    "searchHistory-master.zip" 文件可能包含一个实现带历史记录功能的搜索框的项目源代码。这种搜索框不仅可以实时响应用户的输入,还能保存并显示用户过去的搜索记录,以方便他们快速重用或访问以前查找过的数据。 ...

    搜索框(带浏览记录)

    1. 延迟加载:对于大量的浏览记录,可以采用延迟加载策略,只在用户滚动到相应位置时才加载更多的历史记录,以减少初始页面加载时间。 2. 分页:如果记录数量过多,可以实现分页展示,避免一次性加载过多数据导致...

    jQuery文字记录搜索历史代码

    至此,我们已经使用jQuery和localStorage实现了一个简单的搜索历史记录功能。通过这个功能,用户不仅可以方便地回顾他们的搜索行为,还可以快速重复搜索,提升了使用体验。文件"jiaoben5810"可能是包含这个功能的源...

Global site tag (gtag.js) - Google Analytics