📅  最后修改于: 2023-12-03 14:49:55.606000             🧑  作者: Mango
在现今的信息时代,互联网已经成为了人们获取信息和解决问题的主要途径之一,许多人会在日常浏览中收藏一些网站,以便日后快速访问。本文将介绍如何使用 JavaScript 构建一个站点书签应用程序,并使用本地存储来保存已添加的书签。
本应用程序的实现思路如下:
首先,我们需要使用 HTML 和 CSS 来构建应用程序的用户界面。以下是一个简单的示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>站点书签应用程序</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>站点书签应用程序</h1>
<p>请输入网站名称和地址,然后点击“添加”按钮:</p>
<form>
<label for="name">名称:</label>
<input type="text" id="name" name="name" placeholder="请输入网站名称"><br>
<label for="url">地址:</label>
<input type="text" id="url" name="url" placeholder="请输入网站地址">
<button type="submit">添加</button>
</form>
<hr>
<h2>我的书签</h2>
<ul id="bookmarks"></ul>
<script src="app.js"></script>
</body>
</html>
在上面的代码中,我们定义了一个表单,包含了输入网站名称和地址的两个文本框,还有一个“添加”按钮。在表单下面,我们又定义了一个包含了所有书签的列表。
接下来,我们将使用 JavaScript 代码来为表单和列表中的元素添加点击事件监听器,以实现添加、删除、展示书签等功能。
首先我们需要获取表单和列表元素的引用,然后为表单添加一个“submit”事件监听器,当用户点击“添加”按钮时,将表单中的网站名称和地址信息添加到列表中。以下是示例代码:
// 获取表单和列表元素的引用
const form = document.querySelector('form');
const ul = document.querySelector('#bookmarks');
// 为表单添加一个“submit”事件监听器
form.addEventListener('submit', function(e) {
// 阻止表单默认的提交行为
e.preventDefault();
// 获取表单中网站名称和地址信息
const name = document.querySelector('#name').value;
const url = document.querySelector('#url').value;
// 创建一个包含网站名称和地址信息的对象
const bookmark = { name, url };
// 将对象转换为字符串并保存到本地存储
localStorage.setItem('bookmark_' + name, JSON.stringify(bookmark));
// 将输入框内容清空
document.querySelector('#name').value = '';
document.querySelector('#url').value = '';
// 调用展示书签的函数,更新书签列表
showBookmarks();
});
// 展示书签的函数
function showBookmarks() {
// 先清空列表中的所有元素
ul.innerHTML = '';
// 遍历本地存储中所有的书签信息,并将其添加到列表中
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
// 如果当前的键是以“bookmark_”开头的,则表示其是一个书签信息
if (key.startsWith('bookmark_')) {
const bookmark = JSON.parse(localStorage.getItem(key));
const li = document.createElement('li');
li.innerHTML = `<a href="${bookmark.url}">${bookmark.name}</a>
<button class="delete" onclick="deleteBookmark('${bookmark.name}')">删除</button>`;
ul.appendChild(li);
}
}
}
// 删除书签的函数
function deleteBookmark(name) {
// 从本地存储中删除该书签信息
localStorage.removeItem('bookmark_' + name);
// 调用展示书签的函数,更新书签列表
showBookmarks();
}
// 页面加载时,调用展示书签的函数,初始化书签列表
showBookmarks();
在上面的代码中,我们先获取表单和列表元素的引用,并为表单添加了一个“submit”事件监听器。当用户提交表单时,我们将获取到的信息封装成一个包含网站名称和地址信息的对象,然后将其转换为字符串并保存到本地存储中。接着我们将输入框的内容清空,并调用展示书签的函数来更新书签列表。
展示书签的函数首先清空列表中的所有元素,然后遍历本地存储中所有的键值对,如果当前的键是以“bookmark_”开头的,则表示其是一个书签信息,我们就使用 JSON 解析器将其转换为对象,并将其添加到列表中。为了能够删除已添加的书签,我们在每个列表元素后面都添加了一个“删除”按钮,并为其添加了一个点击事件监听器,当用户点击该按钮时,我们就从本地存储中删除该书签信息,并调用展示书签的函数来更新书签列表。
最后,我们需要使用 Web Storage 提供的本地存储来保存已添加的书签信息。以下是示例代码:
// 将对象转换为字符串并保存到本地存储
localStorage.setItem('bookmark_' + name, JSON.stringify(bookmark));
// 从本地存储中删除该书签信息
localStorage.removeItem('bookmark_' + name);
在上面的代码中,我们使用了 localStorage 对象提供的“setItem”和“removeItem”方法来保存和删除书签信息。“localStorage.setItem(key, value)”方法将给定的键值对保存到本地存储中;“localStorage.removeItem(key)”方法从本地存储中删除给定的键值对。需要注意的是,为了避免与其他应用程序的键值对冲突,在保存和删除键值对时,我们都给其添加了一个“bookmark_”前缀。
注:Web Storage 提供了两种本地存储方式:
本文介绍了如何使用 JavaScript 构建一个站点书签应用程序,并使用 Web Storage 提供的本地存储来保存已添加的书签信息。需要注意的是,由于 Web Storage 的大小限制是 5MB,所以不能保存过多的书签信息。在实际开发中,还需要考虑其他的安全性和易用性问题,如跨站点脚本攻击和用户界面的友好性等。