9. 作業

待辦事項(To-Do List)

javascript 資料夾中,建立 assignment 資料夾。然後在 assignment 資料夾內,建立以下資料夾及檔案:

  • index.html

  • css/index.css

  • js/index.js

建議執行順序:

介面1 → 介面2 → 資料1 → 資料2 → 介面3 → 資料3 → 介面4 → 資料4 → 介面5 → 資料5 → 介面6 → 資料6。

介面

第一步:基本介面及 text 欄位事件

提供 html 及 CSS:

<article class="task_container">
  <h1 class="title1">任務管理</h1>

  <div class="task_add_block">
    <input type="text" class="task_name" placeholder="輸入待辦事項…">
    <button type="button" class="task_add">新增</button>
  </div>

  <div class="task_list_parent">
    <ul class="task_list">
    </ul>
  </div>
</article>

完成以下項目:

  • 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。

結果示意:

第二步:新增待辦事項

更新 html、css:

新增「待辦事項」的 html:

完成以下項目:

  • 按下「新增」按鈕時,將以上的待辦事項 html,新增到 ul.task_list 裡面的最前面。

  • 如果沒有輸入待辦事項,按「新增」的話,不能有任何反應。

  • 新增成功的話,待辦事項欄位要清空。

  • 輸入的待辦事項,如果文字的最左邊、最右邊有空格,需移除。(語法:JS 內建的 trim() 函式)。

  • 按下「Enter」鍵,也要能新增待辦事項。

結果示意:

第三步:移除與清空

更新 index.html:

將以下這行放到 h1 標籤之前:

更新 index.css:

完成以下項目:

  • 按下「移除」按鈕,需詢問使用者是否要移除,若確定的話,ul.task_list 裡的第一層子元素 li 標籤,加上 fade_out 這個 class,就會淡出 1 秒,然後請移除該筆待辦事項。

  • 按下「清空」按鈕,需詢問使用者是否要清空,若確定的話,ul.task_list 裡的第一層子元素 li 標籤,加上 fade_out 這個 class,就會淡出 1 秒,然後請清除全部的待辦事項。

結果示意:

第四步:更新待辦事項

index.js 檔案更新,待辦事項更新以下結構,以老師自己寫的為例,有以下這行:

在其下方,加上這行(留意有加上 -none 這個 class,即預設是消失狀態):

更新 index.css:

完成以下項目:

  • 按下「更新」按鈕,出現一般文字框,然後可以更新。

  • 再按下「更新」按鈕,回到不可編輯的狀態,但待辦事項要是更新的。

  • 如果所更新的待辦事項,沒有輸入文字,跳出提醒視窗(alert),顯示「請輸入待辦事項」。

  • 待辦事項的文字若最左邊、最右邊有空格的話,需移除。

結果示意:

第五步:排序

更新 index.css:

完成以下項目:

  • 按下「往上」按鈕,與上面的待辦事項對調。(註:每個待辦事項是以 li 為單位。)

  • 按下「往下」按鈕,與下面的待辦事項對調。

  • 第一個的待辦事項,「往上」按鈕按了要沒反應;最後一個的待辦事項,「往下」按鈕按了要沒反應。

結果示意:

第六步:重要性的星號

更新 index.css:

完成以下項目:

  • 點擊星號的時候,該星號加上 -on 這個 class,然後該筆待辦事項,星號數( data-star )小於等於點擊的星號數的話,也要加上 -on 這個 class;反之則移除。

結果示意:

資料更新至 localStorage

第一步:新增資料至 localStorage

資料儲存至 localStorage,提供參考原始碼如下:

第二步:從 localStorage 取得資料

提示:頁面 DOMContentLoaded 事件發生之後,執行某個函式(例:get_tasks()),這段函式用途是將 localStorage 裡的資料抓出來,然後進行資料的處理,拼裝完 html 之後,再丟回到頁面上:

在 DOMContentLoaded 事件發生之後,執行以下程式:

第三步:移除 localStorage 裡的資料

提示:先認識 陣列.filter() 函式:https://codepen.io/carlos411/pen/RwBmybr

移除 localStorage 中的單筆待辦事項:

清空 localStorage 所有的資料,內建就有的程式語法:

第四步:更新 localStorage 中,name 的資料

提示:將待辦事項從 localStorage 裡全部抓出來,然後跑迴圈,然後找到欲更新的待辦事項,將 name 換掉,然後回存至 localStorage,部份原始碼:

第五步:更新 localStorage 中的排序

提供寫好的參考原始碼:

第六步:更新 localStorage 中,star 的資料

仿照第四步更新 name 的部份,很類似。提供部份原始碼:

完成。

繳交期限

0/(日) 晚上 點之前繳交。

繳交方式

assignment 資料夾,壓成一個壓縮檔,然後繳交至 Tibame 後台。

前端班後台網址:https://frontend.tibame.com/

JAVA班後台網址:https://java.tibame.com/

參考作法

Last updated