在网页中添加一个搜索框,允许用户输入查询内容,并通过 jQuery 实现对用户输入内容的监听,同时使用 LocalStorage 来保存用户的搜索历史。
当用户点击“搜索”按钮或按下回车键时,将输入的内容存储到 LocalStorage 中,并在页面上显示最近的搜索记录。同时提供一个清除历史记录的功能。
$(document).ready(function() {
// 初始化搜索历史
initLocalStorage();
// 监听搜索按钮点击事件
$('.search_sub').click(function() {
var value = $('.input').val();
setHistoryItems(value);
});
// 监听历史记录项点击事件
$('.ulHis li').on('click', function() {
var text = $(this).text().trim();
setHistoryItems(text);
});
// 清除历史记录
$('#delHis').click(function() {
clearHistory();
});
});
function initLocalStorage() {
var historyItems = localStorage.getItem('historyItems');
if (historyItems !== null) {
var items = historyItems.split('|');
if (items.length > 0) {
var html = '';
for (var i = 0; i html += '' + items[i] + '';
}
$('.ulHis').html(html);
}
}
}
function setHistoryItems(keyword) {
var maxNum = 5;
keyword = keyword.trim();
var historyItems = localStorage.getItem('historyItems') || '';
var items = historyItems.split('|').filter(function(item) {
return item !== keyword;
});
if (items.length >= maxNum) {
items.shift();
}
items.unshift(keyword);
localStorage.setItem('historyItems', items.join('|'));
}
function clearHistory() {
localStorage.removeItem('historyItems');
$('.ulHis').empty();
}
请注意,上述代码中的 ES6 语法可能不被所有浏览器支持,特别是较旧的移动设备浏览器(如魅族、红米、华为的一些低版本)。为了确保兼容性,建议使用 Babel 或 Traceur 进行转译。