---
id: bd7158d8c442eddfaeb5bd0f
title: Build a Pomodoro Clock
isRequired: true
challengeType: 3
videoUrl: ''
localeTitle: 建立一个番茄钟
---
## Description
目标:构建一个功能类似于此的CodePen.io应用程序: https : //codepen.io/freeCodeCamp/full/XpKrrW 。完成以下用户故事并通过所有测试。给它你自己的个人风格。您可以使用HTML,JavaScript,CSS,Bootstrap,SASS,React,Redux和jQuery的任意组合来完成此项目。您应该使用前端框架(例如React),因为本节是关于学习前端框架的。不建议使用上面未列出的其他技术,使用它们的风险由您自行承担。我们正在寻求支持其他前端框架,如Angular和Vue,但目前不支持它们。我们将接受并尝试修复所有使用建议的技术堆栈的问题报告。快乐的编码! 用户故事#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:当我单击session-decrement
id的元素时, id="session-length"
的值减1,我可以看到更新后的值。 用户故事#15:当我单击session-increment
为id的元素时, id="session-length"
的值会增加1,我可以看到更新后的值。 用户故事#16:我不能将会话或休息长度设置为<= 0. 用户故事#17:我不能将会话或休息时间设置为> 60. 用户故事#18:当我首先单击id="start_stop"
的元素,计时器应该从当前显示在id="session-length"
的值开始运行,即使该值已经从原始值25递增或递减。 用户故事#19 :如果计时器正在运行,则id为time-left
的元素应以mm:ss
格式显示剩余时间(递减值1并每1000ms更新一次显示)。 用户故事#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"
的音频元素必须为1秒或更长。 用户故事#28: id为beep
的音频元素必须停止播放,并在单击具有reset
id的元素时重绕到开头。您可以通过分叉此CodePen笔来构建项目。或者您可以使用此CDN链接在您喜欢的任何环境中运行测试: https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js
: https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js
完成后,将URL提交给您的工作通过所有测试的项目。如果卡住,请记住使用Read-Search-Ask方法。
## Instructions
## Tests
## Challenge Seed
## Solution
```js
// solution required
```