html5 输入框记忆,使用HTML5 Web Storage API实现的可记忆用户搜索选项

这篇博客详细介绍了如何利用JavaScript实现一个基于本地存储的搜索功能。文章中,作者展示了如何设置`window.onload`加载初始化函数,获取并操作`localStorage`中的数据,以及添加、删除和清除搜索项。主要涉及的函数包括`getSearchItems`、`AddToSearch`、`deleteSearchItem`等,这些函数用于管理搜索历史记录,并通过DOM操作动态更新页面显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

window.onload = init;

function init() {

var button = document.getElementById("add_button");

button.onclick = AddToSearch;

var clearButton = document.getElementById("clear_button");

clearButton.onclick = clearSearchItems;

var searchItemsArray = getSearchItems();

for (var i = 0; i < searchItemsArray.length; i++) {

var key = searchItemsArray[i];

var value = JSON.parse(localStorage[key]);

addSearchItemToDOM(key, value);

}

}

function getSearchItems() {

var searchItemsArray = localStorage.getItem("searchItemsArray");

if (!searchItemsArray) {

searchItemsArray = [];

localStorage.setItem("searchItemsArray", JSON.stringify(searchItemsArray));

} else {

searchItemsArray = JSON.parse(searchItemsArray);

}

return searchItemsArray;

}

function AddToSearch() {

if (!window["localStorage"]) {

alert("No local storage support");

//you can put alternate code here

return false;

}

var searchItemsArray = getSearchItems();

var value = document.getElementById("note_text").value;

if (value != "") {

var currentDate = new Date();

var key = "Item_" + currentDate.getTime();

var ItemObj = {

"value": value

};

localStorage.setItem(key, JSON.stringify(ItemObj));

searchItemsArray.push(key);

localStorage.setItem("searchItemsArray", JSON.stringify(searchItemsArray));

addSearchItemToDOM(key, ItemObj);

document.getElementById("note_text").value = "";

} else {

alert("Enter Search Item");

}

}

function deleteSearchItem(e) {

var key = e.target.id;

if (e.target.tagName.toLowerCase() == "span") {

key = e.target.parentNode.id;

}

var searchItemsArray = getSearchItems();

if (searchItemsArray) {

for (var i = 0; i < searchItemsArray.length; i++) {

if (key == searchItemsArray[i]) {

searchItemsArray.splice(i, 1);

}

}

localStorage.removeItem(key);

localStorage.setItem("searchItemsArray", JSON.stringify(searchItemsArray));

removeItemFromDOM(key);

}

}

function addSearchItemToDOM(key, ItemObj) {

var searchItems = document.getElementById("searchItems");

var Item = document.createElement("li");

Item.setAttribute("id", key);

var span = document.createElement("span");

span.setAttribute("class", "Item");

span.innerHTML = ItemObj.value;

Item.appendChild(span);

searchItems.appendChild(Item);

Item.onclick = deleteSearchItem;

}

function removeItemFromDOM(key) {

var Item = document.getElementById(key);

Item.parentNode.removeChild(Item);

}

function clearSearchItems() {

localStorage.clear();

var ItemList = document.getElementById("searchItems");

var searchItems = ItemList.childNodes;

for (var i = searchItems.length - 1; i >= 0; i--) {

ItemList.removeChild(searchItems[i]);

}

var searchItemsArray = getSearchItems();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值