AC - Dev C2 前端開發實作 經驗回顧

更新於 發佈於 閱讀時間約 5 分鐘

C2 開始終於使用到 visual studio code,
這個階段學到 JavaScript 核心概念、DOM 操作、API 串接、MVC 架構,
每天都在 coding,每週都在追進度,
用壓縮到極致的時間寫完作業,

但跟著課程內容寫程式碼,真的有學到嗎?

有,吧。
畢竟在寫最後的電影清單作業,遇到不少挫折,
在經過不斷反思,回頭翻筆記跟課程講解,
反而有種在失敗中成長的感覺。

電影清單畫面:


最煩惱的問題:收藏按鈕的樣式失效

一開始模式只要切換,或是使用搜尋功能,
已經加入收藏的電影,又會渲染成初始樣式,
而不是像圖片裡看到的,按鈕會變成紅色x。

直覺就是跟收藏功能相關的函式:

addToFavorite(id) {
const list = JSON.parse(localStorage.getItem('favoriteMovies')) || []
const movie = movies.find((movie) => movie.id === id)
if (list.some((movie) => movie.id === id)) {
return alert('此電影已加入收藏清單')
}
list.push(movie)
localStorage.setItem('favoriteMovies', JSON.stringify(list))
}

我看著這段程式碼,
想用 classList.add() 把樣式加上,
腦子卡了好幾個小時,卻百思不得其解,
不知道要怎麼抓 DOM 節點,

如果是在渲染畫面的時候,更改 innerHTML 呢?

於是我將目標轉向渲染畫面的函式,也許這裡有突破點:

renderMovieGallery(data) {
let rawHTML = ''
data.forEach((item) => {
rawHTML += `
...
<button class="btn btn-info btn-add-favorite" data-id="${item.id}">
+
</button>
...
`
}
})
dataPanel.innerHTML = rawHTML
}
如果是我會怎麼做?
如果我遇到類似情境會怎麼做?

假設我有一堆書要上架,有些有折扣、有些沒有,
而我的工作就是在上架前,把折扣貼紙貼在對的書上,
讓顧客一看就知道哪些有優惠活動。

那我會這麼做:
去查看工聯單寫著哪些書有折扣,一邊比對一邊貼上貼紙。

而在程式碼裡面,把收藏電影的資料放在 localStorage,
可以用來比對資料(工聯單),
要在渲染畫面前(上架前),先比對是不是收藏過(查看工聯單比對資料),
把樣式修改(貼上貼紙)後再渲染出來。

renderMovieGallery(data) {
let rawHTML = ''
const list = JSON.parse(localStorage.getItem('favoriteMovies')) || []
// 把要比對的資料抓出來​ 存在 list 中

data.forEach((item) => {
// 用迴圈比對 data 裡面的​項目

if (list.some((movie) => movie.id === item.id)) {
// 如果在 data 的項目符合 list 裡的收藏
// 把按鈕渲染成已加入收藏的樣式
rawHTML += `
...
<button class="btn btn-danger btn-remove-favorite" data-id="${item.id}">
x
</button>
...
`
} else {
// 如果不符合 則渲染成初始樣式
rawHTML += `
...
<button class="btn btn-info btn-add-favorite" data-id="${item.id}">
+
</button>
...
`
}
})
dataPanel.innerHTML = rawHTML
}

回頭試跑網頁,按鈕可以正常使用,
不枉費我卡了一整個下午..


從 C1 一路上到了 C2,
知道要寫出漂亮 CSS 樣式的方法有很多種,
也知道做出 JavaScript 的功能有很多方法,
對我而言最困難的不是語法、物件與陣列或MVC 架構,
而是如何拆解問題。

換個角度思考,自己會怎麼做?
再把作法切成微小的步驟。


留言
avatar-img
留言分享你的想法!
avatar-img
碎碎念
5會員
14內容數
本來是理科生,在被物理放棄之後成為了文科生,有時理性思考,偶爾卻會脫口出感性的字句;喜歡打字的聲音,以生活為靈感寫下過去、現在與未來。
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。
Thumbnail
在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。
Thumbnail
C2 開始終於使用到 visual studio code, 這個階段學到 JavaScript 核心概念、DOM 操作、API 串接、MVC 架構, 每天都在 coding,每週都在追進度, 用壓縮到極致的時間寫完作業, 但跟著課程內容寫程式碼,真的有學到嗎? 有,吧。 畢竟在寫最後的電影清單
Thumbnail
C2 開始終於使用到 visual studio code, 這個階段學到 JavaScript 核心概念、DOM 操作、API 串接、MVC 架構, 每天都在 coding,每週都在追進度, 用壓縮到極致的時間寫完作業, 但跟著課程內容寫程式碼,真的有學到嗎? 有,吧。 畢竟在寫最後的電影清單
Thumbnail
之前一直沒有寫相關的作業心得筆記,一方面是覺得很熟練難度不高所以就很懶惰...但進入到學期2-2後,光是S2的製作電影清單,突然感覺難度一下提升超級多,很多內容不是一次兩次就能夠記起來且熟悉,而且邏輯程式方面的量也上升到百行才發現真的很難一下吸收,所以決定開始來寫學習、作業、技術相關筆記來加深自己的
Thumbnail
之前一直沒有寫相關的作業心得筆記,一方面是覺得很熟練難度不高所以就很懶惰...但進入到學期2-2後,光是S2的製作電影清單,突然感覺難度一下提升超級多,很多內容不是一次兩次就能夠記起來且熟悉,而且邏輯程式方面的量也上升到百行才發現真的很難一下吸收,所以決定開始來寫學習、作業、技術相關筆記來加深自己的
Thumbnail
Visual studio code(VS Code),Hello World !
Thumbnail
Visual studio code(VS Code),Hello World !
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News