溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在JavaScript中使用location實現一個搜索框歷史記錄功能

發(fā)布時間:2021-03-22 17:21:55 來源:億速云 閱讀:268 作者:Leah 欄目:web開發(fā)

這篇文章將為大家詳細講解有關如何在JavaScript中使用location實現一個搜索框歷史記錄功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

html代碼

<form id="hisform">
  <div id="searchbox">
    <input id="inpt" type="text" autocomplete="off" />
    <input id="btn" type="button" value="搜索" />
    <div id="historybox">
      <h4>搜索記錄:</h4>
      //用于保存記錄信息
      <ul id="list">
      </ul>
    </div>
  </div>
</form>

css代碼

* {
   margin: 0;
   padding: 0;
 }
 input {
   border: 0;
   vertical-align: middle;
   float: left;
 }
 #searchbox {
   width: 300px;
   height: 50px;
   background: #fff;
   margin: 100px auto;
   border: 1px solid #ccc;
   position: relative;
 }
 #inpt {
   width: 240px;
   height: 50px;
   outline: none;
   text-indent: 10px;
 }
 #btn {
   width: 60px;
   height: 50px;
   cursor: pointer;
 }
 /* 歷史記錄框 */
 #historybox {
   width: 280px;
   padding: 10px 10px 50px;
   border: 1px solid #ccc;
   position: absolute;
   top: 50px;
   left: -1px;
   /* 隱藏 */
   display: none;
 }
 #historybox h4 {
   margin-bottom: 10px;
 }
 #list {
   list-style: none;
 }
 #list .on {
   float: left;
   border: 1px solid #ccc;
   background: #aaa;
   height: 30px;
   line-height: 30px;
   margin: 0 2px;
   border: 1px solid #ccc;
   border-radius: 5px;
 }
 #list .active {
   color: #fff;
   text-decoration: none;
   padding: 2px;
 }

js代碼(這里需引入jQuery)

$(function () {
  let max_history = 7;// 存儲最大歷史數據
  // 鼠標移入事件
  $('#inpt').on('focus', function () {
    $('inpt').val = '';
    let data = localStorage.getItem('data'); //從本地存儲中讀取數據
    if (!data) {
      $('#historybox').css('display', 'none');
    } else {
      $('#historybox').css('display', 'block');
      historydata(JSON.parse(data)); // 渲染數據
    }
  })
  // 鼠標移出事件
  $('#inpt').on('blur', function () {
    $('#historybox').css('display', 'none');
    init_history();// 初始化歷史記錄,清空記錄
  })
  //點擊搜索按鈕時,將搜索內容添加到本地存儲
  $('#btn').on('click', function () {
    var search = inpt.value;
    var data = localStorage.getItem('data'); //從本地存儲中讀取數據
    if (data) {
      var arr = JSON.parse(data); //如果有數據則轉換成對象或數組
    } else {
      var arr = []; //如果沒有數據,則新增一條
    }
    arr.push(search);
    removalDuplicate(arr);// 對用戶輸入值進行處理(去重-篩選)
    localStorage.setItem('data', JSON.stringify(arr)); //將數據寫入到本地存儲中
  })
  // 數組去重-篩選函數
  function removalDuplicate(arr) {
    for (let i = 0; i < arr.length; i++) {
      var arritem = arr[i].trim(); // 去除字符串兩端空格
      // 如果值為空,則不添加
      if (arritem == '') {
        arr.splice(i, 1);
      }
      if (arritem !== "") {
        for (let j = i + 1; j < arr.length; j++) {
          if (arr[i] == arr[j]) {
            arr.splice(i, 1);//如果第二次輸入的值與第一次相同,則添加第二次的值
          }
        }
      }
    }
    return arr;
  }
  // 渲染數據
  function historydata(searchArr) {
    searchArr.reverse();//反轉,從后往前添加
    // 遍歷出數據
    if (searchArr.length <= max_history) {//如果存儲數據小于等于max_history,則遍歷渲染
      for (let i = 0; i < searchArr.length; i++) {
        $('#list').append(`<li class='on'><a href='#' class='active'>${searchArr[i]}</a><li>`);
      }
    } else {//否則渲染最大歷史記錄條數
      for (let i = 0; i < max_history; i++) {
        $('#list').append(`<li class='on'><a href='#' class='active'>${searchArr[i]}</a><li>`);
      }
    }
  }
  // 初始化-清空歷史記錄
  function init_history() {
    $('#list').html('');
  }
})

關于如何在JavaScript中使用location實現一個搜索框歷史記錄功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI