Javascript 香草JS闹钟:范围和增量问题

Javascript 香草JS闹钟:范围和增量问题,javascript,scope,Javascript,Scope,我的闹钟有两个问题 1) 当小时数增加或减少到12点以上时,我想从上午切换到下午。问题是我在哪里调用了today.getHours();,它在一个不同的函数中。我的增量按钮函数(增加/减少)不在该函数的范围内,当移到今天保留的时钟函数中时。getHours()不起作用,所以我不能说当小时数大于12时,切换到PM。再次调用getHours似乎是多余的。有人对如何在vanilla JS中解决这个问题有什么建议吗?有更好的方法吗 2) 单击时,分钟减少增量按钮给出负值。我知道这可能有一个简单的解决方案

我的闹钟有两个问题

1) 当小时数增加或减少到12点以上时,我想从上午切换到下午。问题是我在哪里调用了today.getHours();,它在一个不同的函数中。我的增量按钮函数(增加/减少)不在该函数的范围内,当移到今天保留的时钟函数中时。getHours()不起作用,所以我不能说当小时数大于12时,切换到PM。再次调用getHours似乎是多余的。有人对如何在vanilla JS中解决这个问题有什么建议吗?有更好的方法吗

2) 单击时,分钟减少增量按钮给出负值。我知道这可能有一个简单的解决方案,但我想我已经盯着它太久了,看不到它

//选择元素
常量报警时间=document.getElementById('alarmTime');
const set_alarm=document.getElementById('setAlarm');
const alarm_alert=document.getElementById('alarmAlert');
const hr_increase=document.getElementById('hourIncrease');
const hr_decrease=document.getElementById('hourDecrease');
const min_increase=document.getElementById('minuteIncrease');
const min_decrease=document.getElementById('minuteDecrease');
常量增量=document.querySelectorAll('.increment');
//变数
让人力资源部;
让敏;
让托德;
设alarmHr=0;
设alarmMin=0;
让alarmTOD=“AM”;
设alarmActive=false;
//警报声
让声音=新音频(“https://res.cloudinary.com/saveallthethings/video/upload/v1565033348/Free%20Music%20Downloads/bensound-嘿_vunrwo.mp3);
//报警功能
如果(alarmHr==hr&&parseInt(alarmMin)==min&&alarmTOD==TOD){
声音。播放();
卡片.classList.add(“blinkingAlarm”);
}
//有时间
功能时钟(){
//显示问候语、时间和日期
让今天=新日期();
让year=today.getFullYear();
让date=today.getDate();
让hours=today.getHours();
让分钟=今天。getMinutes();
//指定Am或PM,并填充问候语
如果(小时数>=17){
timeofDay=“PM”;
}否则,如果(小时数>=12和小时数<17){
timeofDay=“PM”;
}否则{
timeofDay=“AM”;
}
//将小时数转换为12小时格式
如果(小时数>12){
小时=小时-12;
}
否则如果(小时===0){
小时=12;
}
//对于一位数分钟,添加一个零
若有(第12分钟){
alarmHr=alarmHr-12;
}
}
hr_decrease.onclick=function(){
报警hr--;
如果(报警hr 59){
alarmMin=alarmMin-60;
}
如果(alarmMin==0){
alarmMin=“00”;
}
}
min_decrease.onclick=函数(){
警报分钟--;
如果(报警最小值<10){
alarmMin=“0”+分钟;
}
如果(报警最小值<0){
alarmMin=alarmMin%60;
}
}; 
@导入url('https://fonts.googleapis.com/css?family=Montserrat:900|开放式+Sans:800 |源代码+Sans+Pro:300’;
html,正文{
身高:100%;
字体系列:“源Sans-Pro”,无衬线;
字体大小:15px;
}
.card_容器{
高度:100vh;
}
.中心{
显示器:flex;
证明内容:中心;
对齐项目:居中;
}
.卡片{
边界半径:15px;
背景色:rgba(254,253,253,0.8);
盒子阴影:0px 0px 51px-3px rgba(0,0,0,0.13);
最大宽度:22雷姆;
边框:实心rgba(2542533,0.8)0.1px;
}
布林金加拉姆先生{
动画:闪烁的报警1.2秒轻松输入输出无限;
}
@关键帧闪烁报警{
50%{
边框:纯白7px;}
}
.card_inner{
边界半径:15px;
保证金:.75雷姆;
}
.card\u当前容器{
边界半径:15px;
边缘底部:1rem;
}
.card_报警容器{
颜色:#7E7E7E;
背景:#fff;
文本对齐:居中;
}
.card_报警容器{
弯曲方向:立柱;
边界半径:15px;
}
.报警选项{
显示器:flex;
颜色:#7E7E7E;
填料顶部:.5rem;
底部填充物:.5rem;
}
.闪烁文字{
动画:闪烁文本1.6s线性无限;
}
@关键帧闪烁文本{
50%{不透明度:0.3;}
}
.挫折{
弯曲方向:立柱;
左侧填充:.5rem;
填充权:.5rem;
填充顶部:0;
}
.按钮{
显示:块;
边框样式:无;
保证金:0px 0px;
填充:0px;
}
.增量{
字号:1rem;
边界:无;
背景:rgba(254,253,253,0.8);
颜色:#7E7E7E;
字体系列:“源Sans-Pro”,无衬线;
光标:指针;
可见性:隐藏;
}
.增量:悬停{
光标:指针;
颜色:黑色;
边框样式:无;
}
.能见度{
能见度:可见;
}
.报警箱{
填充底部:.2rem;
}
.报警时间{
字号:2rem;
线高:1rem;
填料顶部:.7rem;
}
.alarmAlert{
字体大小:.8rem;
文本转换:大写;
填料顶部:.5rem;
}
.card\u按钮容器{
宽度:100%;
保证金:1雷姆0雷姆;
证明内容:之间的空间;
柔性包装:包装;
}
.btn{
高度:3雷姆;
宽度:8雷姆;
}
#设置警报{
过渡:.2s;
颜色:#fff;
光标:指针;
边界半径:15px;
背景:线性梯度(向左,#ff7e5f,#feb47b);
填充权:.5rem;
左侧填充:.5rem;
字体大小:1.5rem;
保证金权利:0.3雷姆;
}
#设置报警:悬停{
边界半径:20px;
不透明度:.8;
}
#解雇{
过渡:.2s;
字体大小:1.5rem;
颜色:#fff;
边界半径:15px;
光标:指针;
背景:线性梯度(向左,#64B1F2,#00DBF3);
填充权:.5rem;
左侧填充:.5rem;
左边距:0.3雷姆;
}
#解散:悬停{
边界半径:20px;
不透明度:.8;
}
/***媒体查询****/
@仅介质屏幕和(最大宽度:332px){
.当前的问候语{
文本对齐:居中;
}
.card\u按钮容器{
证明内容:中心;
}
.btn{
边缘底部:.5rem;
}
}

+;
−;
无报警设置
+;
−;
设置警报
解雇

在代码中,您需要增加和减少每分钟更改的小时数。我还建议将小时增加和小时减少拉入函数(我有