前面提到了物件、陣列、DOM元素的選取、事件監聽,以及最後的localStorage。這些足夠我們用JavaScript做一個小小的網頁程式,來驗證一下之前提到的方法。
這次我們要來做的是Todo List。
假設金庸先生要邀請武林高手來參加華山論劍,要邀請的人太多了,他記性不好,所以寫了一個小程式來記錄與會者名單。大概是長這個樣子。
然後在來拆解畫面上的功能:
我們可已先把上面的的那張圖區分為三種程式區塊:
- 事件:
- 加入邀請名單:點擊,使用者輸入的資料加入「邀請名單」的localStorage,並渲染到畫面
- 寄出:將資料從「邀請名單」的localStorage中移除,加入已寄出名單的localStorage,並渲染到畫面
- 移除:將資料由「已寄出名單」的localStorage中移除,並渲染到畫面
- 資料:
- 邀請名單的localStorage資料
- 寄出名單的localStorage資料
- 畫面:將localStorage的資料渲染到網頁
所以我們就可以開始實作了!
畫面上的HTML碼如下:
進入JavaScript的部分,先把DOM元素選取起來:
接下來定義資料的部分:
- 計畫邀請的名單,要把它變成陣列物件的格式
- 已經寄出邀請函的名單,也要轉成陣列物件的格式
接下來把事件綁訂到前面指定的DOM元素上。然後更新資料,此時尚未輸入資料,localStorage的key應該還沒建立,所以為空陣列。
按下「新增邀請名單後」把資料新增到data中,並叫用updateList這個函式,把資料組字串,渲染到畫面中。
按下「移到已邀請」時,執行以下程式區塊:
然後是渲染「已邀請名單」的部分:
如果點選「刪除」,執行以下程式:
來看看我的實作吧!
https://codepen.io/popeye_ux/pen/KKqbMwq