日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JavaScript 21天入門:數(shù)據(jù)處理本地存儲

admin
2024年11月1日 22:10 本文熱度 1106

昨天完成了基本功能,但是大家注意刷新之后,內(nèi)容都沒有了。

今天我們就來解決這個(gè)刷新之后內(nèi)容消失的問題。

而解決這個(gè)問題的方案,就是使用本地存儲。

?

在使用了本地存儲之后,注意在刷新操作下,內(nèi)容依然還顯示在頁面上。

數(shù)據(jù)的操作

在引入存儲之后,任務(wù)就變成了要保存的數(shù)據(jù)。

保存的數(shù)據(jù)又要拿來使用,就會有獲取數(shù)據(jù)的操作。

而刪除任務(wù)操作則會刪除數(shù)據(jù)。

總結(jié)下來,在這個(gè)項(xiàng)目里,數(shù)據(jù)需要處理三種操作:保存(添加)、讀取和刪除。

它們發(fā)生的時(shí)間點(diǎn)分別在點(diǎn)擊創(chuàng)建、任務(wù)列表加載和點(diǎn)擊刪除按鈕。

為了代碼的易讀和維護(hù),我們對原來的addTask函數(shù)做一個(gè)調(diào)整,先從中抽出一個(gè)函數(shù)addTaskToDOM,用于處理把任務(wù)添加到列表元素里。

同時(shí)添加以下兩個(gè)函數(shù)處理數(shù)據(jù)的保存和獲取:

  • saveTasks:把任務(wù)數(shù)據(jù)保存到本地存儲里。

  • loadTasks: 從本地存儲里讀取任務(wù)數(shù)據(jù) 。

至于刪除,大家要注意,它是在動態(tài)生成的 DOM 元素里的按鈕,這一部分的邏輯代碼在 addTaskToDOM里。

保存數(shù)據(jù)

function saveTasks() {   const tasks = [];   document.querySelectorAll('.task').forEach((task) => {     tasks.push({       text: task.firstChild.textContent,       completed: task.classList.contains('completed'),     });   });   localStorage.setItem('tasks', JSON.stringify(tasks)); } 

定義任務(wù)列表為數(shù)組,通過querySelectorAll讀取所有 CSS 類為.task 的元素,所以把數(shù)據(jù) push 到數(shù)組。

最后通過JSON.stringify()方法,把數(shù)組轉(zhuǎn)成 JSON 格式的字符串,存儲到本地存儲,存儲 key 為 tasks。

 function addTaskToDOM(taskText, completed = false) {   // 1. 創(chuàng)建新的任務(wù)項(xiàng)   const newTask = document.createElement('li');   newTask.className = 'task';   if (completed) {     newTask.classList.add('completed');   }   newTask.textContent = taskText;    // 2. 添加完成按鈕   const completeBtn = document.createElement('button');   completeBtn.textContent = '完成';   completeBtn.className = 'complete-btn';   completeBtn.addEventListener('click', () => {     newTask.classList.toggle('completed');     saveTasks();   });    // 3. 添加刪除按鈕   const deleteBtn = document.createElement('button');   deleteBtn.textContent = '刪除';   deleteBtn.className = 'delete-btn';   deleteBtn.addEventListener('click', () => {     taskList.removeChild(newTask);     saveTasks();   });    newTask.appendChild(completeBtn);   newTask.appendChild(deleteBtn);    // 將新任務(wù)項(xiàng)添加到任務(wù)列表中   taskList.appendChild(newTask);    // 清空輸入框   taskInput.value = ''; } 

大家注意這一段抽出來的代碼和之前不同之處,在于在完成和刪除按鈕的事件里,都調(diào)用了剛才實(shí)現(xiàn)的saveTasks()方法。

function addTask() {   const taskText = taskInput.value;   if (taskText === '') {     alert('任務(wù)不能為空');     return;   }   addTaskToDOM(taskText);   saveTasks(); } 

原來的 addTask 方法則重構(gòu)成上面這個(gè)樣子。

讀取數(shù)據(jù)

加載任務(wù)數(shù)據(jù)的方法,則比較簡單,只需要把數(shù)據(jù)從本地存儲讀取出來。

注意它是 JSON 格式的字符串,通過使用JSON.parse()方法把它轉(zhuǎn)成對象。

由于它是數(shù)組,則可以使用遍歷方法forEach()對它進(jìn)行遍歷后逐個(gè)加載到 DOM 里。

此時(shí)就知道為什么要抽出方法 addTaskToDOM()了,因?yàn)檫@里要復(fù)用它。

function loadTasks() {   const tasks = JSON.parse(localStorage.getItem('tasks')) || [];   tasks.forEach((task) => {     addTaskToDOM(task.text, task.completed);   }); } 

讀取數(shù)據(jù),需要發(fā)生在頁面加載的時(shí)候,只需要監(jiān)聽DOMContentLoaded事件。

document.addEventListener('DOMContentLoaded', loadTasks); 

總結(jié)

完整代碼如下:

// 獲取DOM元素 const taskList = document.getElementById('task-list'); const taskInput = document.getElementById('task-input'); const addTaskBtn = document.getElementById('add-task-btn');  // 從localStorage加載任務(wù) document.addEventListener('DOMContentLoaded', loadTasks);  function loadTasks() {   const tasks = JSON.parse(localStorage.getItem('tasks')) || [];   tasks.forEach((task) => {     addTaskToDOM(task.text, task.completed);   }); }  function saveTasks() {   const tasks = [];   document.querySelectorAll('.task').forEach((task) => {     tasks.push({       text: task.firstChild.textContent,       completed: task.classList.contains('completed'),     });   });   localStorage.setItem('tasks', JSON.stringify(tasks)); }  // 添加任務(wù)函數(shù) function addTask() {   const taskText = taskInput.value;   if (taskText === '') {     alert('任務(wù)不能為空');     return;   }   addTaskToDOM(taskText);   saveTasks(); }  function addTaskToDOM(taskText, completed = false) {   // 1. 創(chuàng)建新的任務(wù)項(xiàng)   const newTask = document.createElement('li');   newTask.className = 'task';   if (completed) {     newTask.classList.add('completed');   }   newTask.textContent = taskText;    // 2. 添加完成按鈕   const completeBtn = document.createElement('button');   completeBtn.textContent = '完成';   completeBtn.className = 'complete-btn';   completeBtn.addEventListener('click', () => {     newTask.classList.toggle('completed');     saveTasks();   });    // 3. 添加刪除按鈕   const deleteBtn = document.createElement('button');   deleteBtn.textContent = '刪除';   deleteBtn.className = 'delete-btn';   deleteBtn.addEventListener('click', () => {     taskList.removeChild(newTask);     saveTasks();   });    newTask.appendChild(completeBtn);   newTask.appendChild(deleteBtn);    // 將新任務(wù)項(xiàng)添加到任務(wù)列表中   taskList.appendChild(newTask);    // 清空輸入框   taskInput.value = ''; }  // 綁定事件監(jiān)聽器 addTaskBtn.addEventListener('click', addTask);  

今天是堆積代碼的一天,希望你看得快樂!


該文章在 2024/11/2 17:51:20 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 日本高清视频www夜色资源网 | 一区二区区别是什么 | 精品免费在线视频 | 一本精品 | 国产福利爱福利微拍视频 | 国产精品一二三 | 国产伦理一区的二区三区四区 | 精品多人p群 | 日韩综合亚洲色在线影院 | 狂野欧美激情性xxxx | 国产在线观看免费视频在线 | 国产人成精品香港三级在线 | 精品一区二区三区视频免 | 欧美亚洲色另类偷自拍 | 最新69成人国产精品视频免费 | 免费国产不卡在线观看 | 日本欧美大码 | 国产欧美一区二区三区在线看 | 天堂资源中文最新 | 亚洲日本一线产区和二线 | 欧美丰满大 | 国产情侣真实露脸在线最新 | 精品综合国产一区二区三区码码 | 国产精品理论片在线观看 | 经典三级欧美 | 韩日精品在线观看 | 人成免费| 丝袜足控一区二区 | 欧美在线精品国自产拍免费 | 中文字幕亚洲综合久 | 国产一区自拍欧美 | 成人看的羞羞视频免费观看 | 99热这里只有精品23 | 国产网站在线免费 | 好吊妞无缓冲不卡在线视频 | 24小时日本在 | 国产一区二区三区在线播放无 | 国产男生午夜福利免费网站 | 欧美日韩亚洲国内一区二区三区 | 免费看国产精品3a黄的视频 | 国产视频中文字幕 |