4.17 實作:待辦事項
結果示意
在 todolist 資料夾中,建立以下資料夾及檔案:
index.html
css/index.css
js/index.js
建議執行順序:
介面1 → 介面2 → 資料1 → 資料2 → 介面3 → 資料3 → 介面4 → 資料4。
介面
第一步:基本介面及 text 欄位事件
提供 html 及 CSS:
將以下原始碼,放至 body 標籤內:
完成以下項目:
index.html 頁面需載入
index.js及index.css檔。input.task_name在 focus 事件觸發時,div.task_add_block加上-onclass。input.task_name在 blur 事件觸發時,div.task_add_block移除-onclass。
完成後的原始碼如下:
第二步:新增待辦事項
將以下的 CSS,貼至 index.css 的最後方:
新增待辦事項的結構,即以下的 li 標籤,需透過 JS 程式來新增至頁面上:
完成以下項目:
按下「新增」按鈕時,將以上的待辦事項結構,新增到
ul.task_list裡面的最前面。如果沒有輸入待辦事項,按「新增」的話,不能有任何反應。
新增成功的話,待辦事項欄位要清空。
輸入的待辦事項,如果文字的最左邊、最右邊有空格,需移除。(語法:JS 內建的
trim()函式)。按下「Enter」鍵,也要能新增待辦事項。
完成後的原始碼如下:
第三步:移除與清空
更新 index.html:
將以下這行放到 h1 標籤之前:
更新 index.css:
完成以下項目:
按下「移除」按鈕,需詢問使用者是否要移除,若確定的話,該筆待辦事項的 li 標籤,加上
fade_out這個 class,就會淡出 1 秒,然後請移除該筆待辦事項。按下「清空」按鈕,需詢問使用者是否要清空,若確定的話,
ul.task_list裡的第一層子元素li標籤,加上fade_out這個 class,就會淡出 1 秒,然後請清除全部的待辦事項。
完成後的原始碼如下:
第四步:更新待辦事項
index.js 檔案更新,待辦事項更新以下結構,有以下這行:
在其下方,加上這行(留意有加上 -none 這個 class,即預設是消失狀態),value 的部份留意變數名稱:
上述所做的更動,在以下兩個地方有:
重新整理頁面時,要加。
新增待辦事項時,要加。
更新 index.css:
完成以下項目:
按下「更新」按鈕,出現一般文字框,然後可以更新。
再按下「更新」按鈕,回到不可編輯的狀態,但待辦事項要是更新的。
如果所更新的待辦事項,沒有輸入文字,跳出提醒視窗(alert),顯示「請輸入待辦事項」。
待辦事項的文字若最左邊、最右邊有空格的話,需移除。
完成後的原始碼如下:
資料
第一步:新增資料至 localStorage
資料儲存至 localStorage,key 的名稱指定 tasks,然後存進去的資料格式如下:
提供參考原始碼如下:
第一個部份,新增資料時,替每一筆待辦事項產生一個 ID,再將該ID放至 li 標籤上,屬性名稱設定 data-id:
第二個部份,資料存至 localStorage:
第二步:從 localStorage 取得資料
DOMContentLoaded 事件發生之後,執行某個函式(例:get_tasks()),這段函式用途是將 localStorage 裡的資料抓出來,然後進行資料的處理,拼裝完結構之後,再丟回到頁面上(ul 標籤裡):
在 DOMContentLoaded 事件發生之後,執行 get_tasks() 函式:
get_tasks() 函式完成的原始碼如下:
第三步:移除 localStorage 裡的資料
點擊移除按鈕後,若使用者確認要移除,就將 localStorage 裡的該項資料移除。
完成後的原始碼如下:
點擊清空按鈕後,若使用者確認要清空,就將 localStorage 裡的資料清空。
完成後的原始碼如下:
第四步:更新 localStorage 中,name 的資料
完成後的原始碼如下:
Last updated