javascript - 如何使用“setInterval()”每秒更新一次时间,而不是每秒闪烁一次?
问题描述
我正在使用一个下拉列表,使用时刻时区在点击时显示不同的时区。例如,当您单击标有“est”的下拉菜单时,它将显示东部时间,当您单击“cst”时,将显示 cst 时间,依此类推。
无论如何,我遇到的问题是......我setInterval(updateTime, 1000);
用来显示秒数,现在通过当用户点击“est”然后在下拉列表中点击另一个时区,如“cst”时这样做那些时间的每一秒都会在彼此之上出现和消失。我想要它,所以当您单击一个li
元素时,屏幕上的前一个元素将具有 display=none 的属性。因此,例如当您单击 est 时,将显示 est 时间,然后当您单击display=none
cst 时,将显示 est 并显示 cst 时间。满口的男人。
有没有办法做到这一点并且仍然使用setInterval
1 秒?
这是我的代码...
<div>
<li>
<ul>
<li id="tmz1">est</li>
<li id="tmz2">central</li>
<li>pacific</li>
</ul>
</li>
<div id="output1"></div>
<div id="output2"></div>
</div>
$(document).ready(function(){
var output1 = document.getElementById('output1');
var output2 = document.getElementById('output2');
document.getElementById('tmz1').onclick = function updateTime(){
output2.style.display = "none";
output1.style.display = "block";
var now = moment();
var humanReadable = now.tz("America/Los_Angeles").format('hh:mm:ssA');
output1.textContent = humanReadable;
setInterval(updateTime, 1000);
}
updateTime();
});
$(document).ready(function(){
var output2 = document.getElementById('output2');
var output1 = document.getElementById('output1');
document.getElementById('tmz2').onclick = function updateTimeX(){
output1.style.display = "none";
output2.style.display = "block";
var now = moment();
var humanReadable =
now.tz("America/New_York").format('hh:mm:ssA');
output2.textContent = humanReadable;
setInterval(updateTimeX, 1000);
}
updateTimeX();
});
解决方案
将您的 setInterval 分配给一个变量,并在用户选择新值表单下拉列表并使用新值重新启动间隔时清除它
var interval = setInterval(updateTime, 1000);
if(oldValue !== newValue){
clearInterval(interval)
}
推荐阅读
- c# - 是否可以使用使用 bot 状态的 v4 SDK 创建 Azure Function Bot?
- jenkins - Jenkins 使用外部 Maven 库
- javascript - 通过单击带有 javascript 的按钮来更改文本颜色
- docker - 如何设置 FirewallD 以过滤到 docker 暴露端口的流量
- javascript - 反应表单输入在编辑时不改变
- android - 如何知道应用程序是否从 android 通知托盘打开?
- r - Shiny:如何在不重新生成的情况下引用随机生成的数据集?
- c - Malloc前的指针
- go - 如何检查结构字段值是否存在于另一个结构字段中
- javascript - 如何解决 Firebase 功能环境中的 CORS?