2021-05-05 17:13:49 +00:00
|
|
|
|
---
|
|
|
|
|
id: bd7158d8c442eddfaeb5bd0f
|
|
|
|
|
title: 構建一個番茄時鐘
|
|
|
|
|
challengeType: 3
|
|
|
|
|
forumTopicId: 301373
|
|
|
|
|
dashedName: build-a-25--5-clock
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# --description--
|
|
|
|
|
|
2022-10-21 18:04:50 +00:00
|
|
|
|
**目標:** 構建一個應用,功能和 <a href="https://25--5-clock.freecodecamp.rocks" target="_blank" rel="noopener noreferrer nofollow">https://25--5-clock.freecodecamp.rocks</a> 類似。
|
2021-05-05 17:13:49 +00:00
|
|
|
|
|
2022-10-10 19:35:19 +00:00
|
|
|
|
完成以下需求,並且通過所有測試。 可以使用你需要的任何庫或 API。 賦予它你自己的個人風格。
|
2021-05-05 17:13:49 +00:00
|
|
|
|
|
2021-09-18 18:22:53 +00:00
|
|
|
|
可以使用 HTML、JavaScript、CSS、Bootstrap、SASS、React、Redux、jQuery 來完成這個挑戰。 但鑑於這個章節的學習內容與前端框架相關,推薦使用一款前端框架(比如 React)來完成這個挑戰;不推薦使用前面沒有提到的技術,否則風險自負。 不推薦使用前面沒有提到的技術,否則風險自擔。 我們有計劃新增其他前端框架課程,例如 Angular 和 Vue,不過目前還沒有這些內容。 我們會接受並嘗試修復你在使用推薦技術棧創建項目時報告的問題。 編碼愉快!
|
2021-05-05 17:13:49 +00:00
|
|
|
|
|
|
|
|
|
**需求 1:** 應該能看到一個具有`id="break-label"`屬性的元素,這個元素的內容應該是一個字符串(例如:"Break Length")。
|
|
|
|
|
|
|
|
|
|
**需求 2:** 應該能看到一個具有`id="session-label"`屬性的元素,這個元素的內容應該是一個字符串(例如:"Session Length")。
|
|
|
|
|
|
|
|
|
|
**需求 3:** 應該能看到兩個可以點擊的元素,他們分別具有如下 id:`id="break-decrement"` 和 `id="session-decrement"`。
|
|
|
|
|
|
|
|
|
|
**需求 4:** 應該能看到兩個可以點擊的元素,它們分別具有如下 id:`id="break-increment"` 和 `id="session-increment"`。
|
|
|
|
|
|
|
|
|
|
**需求 5:** 應該能看到一個具有 `id="break-length"` 屬性的元素,這個元素默認展示數值應該爲 5(加載後)。
|
|
|
|
|
|
|
|
|
|
**需求 6:** 應該能看到一個具有 `id="session-length"` 屬性的元素,這個元素默認展示數值應該爲 25(加載後)。
|
|
|
|
|
|
|
|
|
|
**需求 7:** 應該能看到一個具有 `id="timer-label"` 屬性的元素,這個元素包含一個表示當前狀態的字符串(例如:"Session")。
|
|
|
|
|
|
|
|
|
|
**需求 8:** 應該能看到一個具有 `id="time-left"` 屬性的元素。 注意:暫停或者運行時,該元素的內容應始終以 `mm:ss` 格式顯示(如 25:00)。
|
|
|
|
|
|
|
|
|
|
**需求 9:** 應該能看到一個具有 `id="start_stop"` 屬性的可點擊的元素。
|
|
|
|
|
|
|
|
|
|
**需求 10:** 應該能看到一個具有 `id="reset"` 屬性的可點擊的元素。
|
|
|
|
|
|
|
|
|
|
**需求 11:** 當點擊 id 屬性爲 `reset` 的元素時,運行中的計時器都應該停止,`id="break-length"` 元素中的值應該重新回到 `5`,`id="session-length"` 元素中的值應該重新回到 25,且 `id="time-left"` 元素應該重置爲默認狀態。
|
|
|
|
|
|
|
|
|
|
**需求 12:** 當點擊 id 屬性爲 `break-decrement` 的元素時,`id="break-length"` 元素的值應該減去 1,且我應該能看到更新後的值。
|
|
|
|
|
|
|
|
|
|
**需求 13:** 當點擊 id 屬性爲 `break-increment` 的元素時,`id="break-length"` 元素的值應該增加 1,且應該能看到更新後的值。
|
|
|
|
|
|
|
|
|
|
**需求 14:** 當點擊 id 屬性爲 `session-decrement` 的元素時,`id="session-length"` 元素的值應該減去 1,且應該能看到更新後的值。
|
|
|
|
|
|
|
|
|
|
**需求 15:** 當點擊 id 屬性爲 `session-increment` 的元素時,`id="session-length"` 元素的值應該增加 1,且應該能看到更新後的值。
|
|
|
|
|
|
|
|
|
|
**需求 16:** 工作或者休息長度不應該可以設置爲 <= 0 的值。
|
|
|
|
|
|
|
|
|
|
**需求 17:** 工作或者休息長度比應該可以設置爲 > 60 的值。
|
|
|
|
|
|
|
|
|
|
**需求 18:** 當首次點擊具有 `id="start_stop"` 屬性的元素時,計時器應該根據 `id="session-length"` 元素當前顯示的值開始運行,即使該值已從原始值 25 遞增過或遞減過。
|
|
|
|
|
|
|
|
|
|
**需求 19:** 如果計時器正在運行,id 屬性爲 `time-left` 的元素應該以 `mm:ss` 的格式展示剩餘的時間(按1遞減並且每秒更新一次顯示的值)。
|
|
|
|
|
|
|
|
|
|
**需求 20:** 如果計時器正在運行,當點擊 `id="start_stop"` 元素時,倒計時應該暫停。
|
|
|
|
|
|
|
|
|
|
**需求 21:** 如果計時器已經暫停,當點擊 `id="start_stop"` 元素時,倒計時應該從暫停的時間點恢復運行。
|
|
|
|
|
|
|
|
|
|
**需求 22:** 當一個工作倒計時結束(注意:計時器必須達到 00:00),並且新的倒計時開始運行時,id 屬性爲 `timer-label` 的元素應該顯示一個表示已經開始休息的字符串。
|
|
|
|
|
|
|
|
|
|
**需求 23:** 當一個工作倒計時結束(注意:計時器必須達到 00:00),應該開始一個新的休息倒計時,時間應該從 `id="break-length"` 元素中當前顯示的值開始計算。
|
|
|
|
|
|
|
|
|
|
**需求 24:** 當一個休息倒計時結束(注意:計時器必須達到 00:00),並且新的倒計時開始運行時,id 屬性爲 `timer-label` 的元素應該顯示一個表示已經開始工作的字符串。
|
|
|
|
|
|
|
|
|
|
**需求 25:** 當一個休息倒計時結束(注意:計時器必須達到 00:00),應該開始一個新的工作倒計時,時間應該從 `id="session-length"` 元素中當前顯示的值開始計算。
|
|
|
|
|
|
|
|
|
|
**需求 26:** 當一個倒計時結束(注意:計時器必須達到 00:00),應該播放一個表示時間到了的聲音提示。 這個提示音應該使用 HTML5 的 `audio`標籤並有一個 `id="beep"` 屬性。
|
|
|
|
|
|
|
|
|
|
**需求 27:** 具有`id="beep"`屬性的音頻元素時長應該至少有一秒。
|
|
|
|
|
|
|
|
|
|
**需求 28:** 當點擊 id 屬性爲 `reset` 的元素時,id 屬性爲 `beep` 的音頻元素必須停止播放並回到開頭。
|
|
|
|
|
|
2022-10-10 19:35:19 +00:00
|
|
|
|
你可以<a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel="noopener noreferrer nofollow">使用 CodePen 模版</a>創建你的新項目,點擊 `Save` 即可創建你的新項目。 或者你可以在任何你喜歡的環境中使用以下 CDN 鏈接來運行測試:`https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`。
|
2021-05-05 17:13:49 +00:00
|
|
|
|
|
|
|
|
|
當你完成了本項目,並且該項目所有測試運行通過, 請提交項目的 URL。
|
|
|
|
|
|
|
|
|
|
# --solutions--
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// solution required
|
|
|
|
|
```
|