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.jsindex.css 檔。

  • input.task_name 在 focus 事件觸發時,div.task_add_block 加上 -on class。

  • input.task_name 在 blur 事件觸發時,div.task_add_block 移除 -on class。

完成後的原始碼如下:

第二步:新增待辦事項

將以下的 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