如何使用“setInterval()”每秒更新时间而不使时间每秒闪烁?

2024-04-10

我正在使用一个下拉列表,该列表使用时刻时区显示不同的时区。例如,当您单击标有“est”的下拉列表时,它将显示东部时间的时间,当您单击“cst”时,将显示 cst 时间,依此类推。

无论如何,我遇到的问题是......我使用setInterval(updateTime, 1000);要显示每秒的秒数,现在通过执行此操作,当用户单击“est”,然后单击下拉列表中的另一个时区(如“cst”)时,这两个时间将每秒出现并消失。我想要它,所以当你点击li屏幕上的前一个元素将具有 display=none 属性。例如,当您单击 est 时,将显示 est 时间,然后当您单击 cst 时,将显示 estdisplay=none并且将显示 cst 时间。男人真是拗口。

有没有办法实现这一点并仍然使用setInterval1秒?

这是我的代码...

<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();

});

也许这会有所帮助。我相信你把这个问题想得太复杂了一点。我在代码中提供了注释供您查看。

注:我没用过moment.js因为这对于您的任务来说是不必要的。

你需要:

  1. 来自 Date 对象的时间
  2. 时区参考 点击后改变
  3. 将发布时间的间隔(与 变化的TZ)
  4. 放置输出的地方
// place to put the output
const output = document.getElementById('output');
// starting timezone
var tz = 'America/New_York';
// Capture click event on the UL (not the li)
document.getElementsByTagName('UL')[0].addEventListener('click', changeTZ);

function changeTZ(e) {
  // e.target is the LI that was clicked upon
  tz = e.target.innerText;
  // toggle highlighted selection 
  this.querySelectorAll('li').forEach(el=>el.classList.remove('selected'));
  e.target.classList.add('selected');
}

// set the output to the time based upon the changing TZ
// Since this is an entire datetime, remove the date with split()[1] and trim it
setInterval(() => {
  output.textContent = new Date(Date.now()).toLocaleString('en-US', {timeZone: `${tz}`}).split(',')[1].trim();
}, 1000);
.selected {
  background-color: lightblue;
}
<div>
  <ul>
    <li class="selected">America/New_York</li>
    <li>America/Chicago</li>
    <li>America/Los_Angeles</li>
  </ul>

  <div id="output"></div>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用“setInterval()”每秒更新时间而不使时间每秒闪烁? 的相关文章

随机推荐

  • 逻辑或运算符与按位或运算符

    有谁知道为什么 if false true true System out println True else System out println False Print True if false true true System ou
  • 如何在 Rails 中发送简单的 json 响应?

    我需要发送 json 响应取决于用户在输入中输入的数据 但我无法发送简单的 json 请求 我关注了这篇文章 http paydrotalks com posts 45 standard json response for rails an
  • MSI 安装程序自定义操作身份问题

    我正在创建一个在数据库上执行脚本的自定义操作 问题是 connectios 使用集成安全性 因此当我尝试打开连接时出现错误 用户 Domain ComputerName 登录失败 当我检查自定义操作的身份时 使用System Securit
  • CSS属性在github中以红色突出显示

    The touch actionSCSS 文件中的属性在 Github diff 中以红色突出显示 有什么理由吗 这是它的 DOM 如果存在语法错误 Github 会突出显示这样的代码 它不是 100 准确 而且它实际上并没有运行您的代码
  • Meteor-AutoForm:如何根据另一个控件更新选择选项

    我一直在寻找一些问题的答案 这些问题应该非常简单 但我一生都无法弄清楚 基本上我有一个带有两个选择控件的meteor autoform
  • 在 Windows 7 上找不到模块“连接”

    请看下面 C Program Files nodejs gt npm g install connect npm http GET https registry npmjs org connect npm http GET https re
  • React Native + React Native Paper 应用程序中未显示图标

    这是一个新鲜的React Native应用程序使用React Native Paper 我按照以下说明进行操作https callstack github io react native paper getting started html
  • 无法实现 grunt-connect-proxy

    为了 http 127 0 0 1 9000 我得到的路线 不能获取 对于 v1 路线我得到 未找到 在此服务器上找不到请求的 URL v1 这是我的 Gruntfile js Generated on 2013 10 08 using g
  • 计算小于当前值的值的数量

    我想计算列中的行数input如果值小于当前行 请参阅下面想要的结果 对我来说 问题是条件基于当前行值 因此它与条件是固定数字的一般情况有很大不同 data lt data frame input c 1 1 1 1 2 2 3 5 5 5
  • 绑定这个更好还是使用变量更好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# 无法从传输连接读取数据:现有连接被远程主机强制关闭。读取网络流

    我看过 无法从传输连接读取数据连接已关闭 https stackoverflow com questions 26995191 unable to read data from the transport connection the co
  • JavaFX 场景的显示随机延迟

    我创建了一个 JavaFX 应用程序 在 Ubuntu Java SE 运行时环境 版本 1 8 0 131 b11 上运行 并制作了一个简单的测试应用程序 public class DelayedSceneApplication exte
  • Angular 2 模拟响应不起作用

    我有以下 Angular 2 测试 tslint disable no unused variable import provide from angular core import MockBackend from angular htt
  • Pyinstaller 无法执行脚本 pyi_rth_pkgres

    I converted the py script to exe using pyinstaller but when I try to run the exe I got this How can I fix it 您必须告诉 pyins
  • 从文件express js 提供 json

    新手要表达的是 我有一个包含 db json 文件的文件夹 并且每 11 秒就会被新的 db json 替换 让express js 提供服务以便在 api 调用上显示新内容的最佳方法是什么 这是我到目前为止所拥有的 const expre
  • 具有多重身份的B2C用户

    在 Azure B2C 中 有多个身份提供商 在本示例中 我将使用本地帐户和 Google 帐户 新用户使用电子邮件地址注册本地帐户 电子邮件受保护 cdn cgi l email protection 他们使用该网站 下次返回时 他们决定
  • Lucene 中跨多个字段的重复值的影响

    在 lucene 索引中的多个字段中重新索引相同的值会产生什么影响 这个想法是 某人的名字是他们的名字和一般详细信息的一部分 所以我想将该值索引到多个字段中 Ted Bloggs 我可能会索引如下 Field Value firstName
  • 删除 SQLPLUS 中不需要的/额外的数据

    我正在通过批处理文件运行一个文件 批处理文件 sqlplus admin admin SERVER abc sql gt output txt SQL 文件 abc sql set PAGESIZE 1000 set LINESIZE 55
  • Symfony POST 变量始终为空

    这是我的 Symfony 控制器 class MyPageController extends Controller public function indexAction Request request postData request
  • 如何使用“setInterval()”每秒更新时间而不使时间每秒闪烁?

    我正在使用一个下拉列表 该列表使用时刻时区显示不同的时区 例如 当您单击标有 est 的下拉列表时 它将显示东部时间的时间 当您单击 cst 时 将显示 cst 时间 依此类推 无论如何 我遇到的问题是 我使用setInterval upd