Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
JavaScript实现下拉选择时区并实时显示时间及相关信息_创想鸟

JavaScript实现下拉选择时区并实时显示时间及相关信息

JavaScript实现下拉选择时区并实时显示时间及相关信息

本教程将指导您如何使用htmlcssjavascript构建一个交互式网页,实现通过下拉菜单选择不同时区,并实时显示该时区的当前时间。同时,页面将根据选择动态展示或隐藏与该时区相关的详细信息表格,确保用户界面的响应性和信息的直观呈现。

在现代Web应用中,为用户提供个性化的时间显示和相关信息是常见的需求。本教程将详细介绍如何通过一个简洁的下拉菜单,不仅能实时更新所选时区的当前时间,还能动态切换显示与该时区相关的详细地域信息表格。我们将利用HTML构建页面结构,CSS进行样式美化,并运用JavaScript实现核心的动态交互逻辑。

核心功能实现

为了实现上述功能,我们需要精心设计HTML结构、应用CSS样式,并编写JavaScript逻辑来处理用户交互和时间更新。

HTML 结构

页面的HTML结构主要包含用于显示时间的元素、一个用于选择时区的下拉菜单,以及一系列根据时区选择而显示/隐藏的元素。



Select Timezone above

立即学习Java免费学习笔记(深入)”;



Country Capital
Philippines Manila
Province/Territory Time Zone Capital Other Cities
Ontario Eastern Toronto Ottawa, Mississauga,
Hamilton, Kitchener,
London, Oshawa,
Windsor, Barrie,
Guelph, Kingston,
Sudbury, Thunder Bay,
Etobicoke
Quebec Eastern Quebec City Montreal, Sherbrooke,
Trois-Rivières, Chicoutimi,
Châteauguay, Granby
Nunavut Eastern Iqaluit Cambridge Bay, Rankin Inlet
Province/Territory Time Zone Capital Other Cities
Nova Scotia Atlantic Halifax Cape Breton, Sydney,
Truro, Dartmouth
New Brunswick Atlantic Fredericton Moncton, Saint John,
Fredericton
Prince Edward Island Atlantic Charlottetown Summerside, Stratford
Province/Territory Time Zone Capital Other Cities
Manitoba Central Winnipeg Brandon, Churchill,
Steinbach, Winkler,
Portage La Prairie, Thompson
Province/Territory Time Zone Capital Other Cities
British Columbia Pacific Victoria Vancouver, Surrey,
Burnaby, Richmond,
Abbotsford, Coquitlam,
Kelowna, Nanaimo,
Kamloops
Yukon Pacific Whitehorse Cambridge Bay, Rankin Inlet
Province/Territory Time Zone Capital Other Cities
Saskatchewan Mountain Regina Saskatoon, Moose Jaw,
Swift Current, Yorkton
Alberta Mountain Edmonton Calgary, Red Deer,
Lethbridge, Airdrie,
Medicine Hat, Grande Prairie,
Banff
Northwest Territories Mountain Yellowknife Inuvik
Province/Territory Time Zone Capital Other Cities
Newfoundland and Labrador Newfoundland St. John's Corner Brook, Grand Falls-Windsor,
Gander

在上述HTML中:

id=”ct”和id=”ct2″用于显示实时时间。ct显示包含日期、时间、时区缩写和全名的详细信息,而ct2则显示简化的时分秒。是核心的下拉菜单,用户通过它选择不同的时区。一系列元素(id从t1到t7)包含了不同时区的详细地域信息,它们将根据下拉菜单的选择动态显示或隐藏。

CSS 样式

CSS主要用于美化页面元素,如字体、大小以及下拉菜单和表格的边框与对齐方式。

#ct {  font-family: arial;  font-size: 15px;}p {  font-family: arial;  font-size: 15px;}select {  -webkit-appearance: none;  -moz-appearance: none;  appearance: none;  padding: 1px;  font-size: 15px;}td,th {  text-align: left;  padding: 5px;  font-family: arial;  font-size: 15px;}th {  text-align: center;  padding: 5px;  font-family: arial;  font-size: 15px;}

这些样式确保了页面元素具有良好的可读性和统一的视觉风格。select元素的appearance: none属性用于移除浏览器默认的下拉箭头样式,以便更好地进行自定义。

JavaScript 逻辑

JavaScript是实现所有动态行为的核心。它负责填充下拉菜单、实时更新时间、以及根据用户选择切换表格的显示状态。

// 隐藏ct2元素,因为它可能在某些情况下不需要立即显示var link = document.getElementById('ct2');link.style.visibility = 'hidden';// 获取下拉菜单元素const sel = document.querySelector("[name=tz]");// 定义一个函数来显示实时时区时间const disp_TZ = () => {  const tz = sel.value; // 获取当前选中的时区值  // 使用toLocaleString获取指定时区的完整时间信息  let str = new Date().toLocaleString("en-US", {    timeZone: tz,    timeZoneName: "short"  });  document.getElementById('ct').innerHTML = str + " ,
" + tz; // 计算并显示简化的时分秒 const dt2 = new Date(); const str2 = new Date(dt2.toLocaleString('en-US', { timeZone: tz })); const diff = dt2.getTime() - str2.getTime(); const dt3 = new Date(dt2.getTime() - diff); const hour = dt3.getHours(); const minute = dt3.getMinutes(); const seconds = dt3.getSeconds(); const str3 = `${hour}:${minute}:${seconds}`; // 模板字符串格式化 document.getElementById('ct2').innerHTML = str3; display_c(); // 继续调用以实现实时更新};// 定义可供选择的时区列表var my_timezones = [ 'None Selected ', 'Asia/Manila', 'Canada/Eastern', 'Canada/Atlantic', 'Canada/Central', 'Canada/Pacific', 'Canada/Mountain', 'Canada/Newfoundland'];// 获取所有以't'开头的表格元素const tables = document.querySelectorAll("table[id^=t]");// 定义一个函数来切换表格的显示状态const toggleStyle = () => { const idx = sel.selectedIndex; // 获取下拉菜单当前选中项的索引 // 遍历所有表格,根据索引决定是否显示 tables.forEach(table => table.hidden = (table.id !== `t${idx}`));};// 动态填充下拉菜单选项my_timezones.forEach(tz => { let opt = document.createElement('option'); opt.text = tz; opt.value = tz; sel.appendChild(opt);});// 定义一个函数来每秒刷新时间显示const display_c = () => { const refresh = 1000; // 1秒刷新一次 setTimeout(disp_TZ, refresh); // 使用setTimeout递归调用disp_TZ};// 为下拉菜单添加事件监听器sel.addEventListener("change", disp_TZ); // 选项改变时更新时间sel.addEventListener("change", toggleStyle); // 选项改变时切换表格显示// 初始化页面状态:首次加载时隐藏所有表格,并显示初始时间toggleStyle();disp_TZ(); // 首次加载时调用一次以显示时间

JavaScript 逻辑详解:

DOM 元素获取与初始化:

link = document.getElementById(‘ct2’); link.style.visibility = ‘hidden’;:ct2元素(用于显示简化的时分秒)在页面加载时被隐藏。const sel = document.querySelector(“[name=tz]”);:获取名为tz的下拉菜单元素。const tables = document.querySelectorAll(“table[id^=t]”);:获取所有id以t开头的表格元素,方便统一管理。

动态填充下拉菜单:

my_timezones数组定义了所有可供选择的时区。my_timezones.forEach(…)循环遍历数组,为每个时区创建一个元素并添加到sel下拉菜单中。

实时时间显示函数 (disp_TZ):

const tz = sel.value;:获取当前下拉菜单选中的时区值。new Date().toLocaleString(“en-US”, { timeZone: tz, timeZoneName: “short” }):这是实现时区转换的关键。它根据指定的timeZone将当前日期时间格式化为对应时区的字符串,并包含时区名称缩写。document.getElementById(‘ct’).innerHTML = …:将格式化后的时间字符串更新到ct元素。为了显示纯粹的HH:MM:SS,代码通过计算当前本地时间与目标时区时间的差异,再将本地时间调整这个差异,从而获取目标时区的时分秒。这是一种间接但有效的方法。display_c():在更新时间后,递归调用display_c(),确保时间持续刷新。

内容切换函数 (toggleStyle):

const idx = sel.selectedIndex;:获取当前下拉菜单选中项的索引(从0开始)。tables.forEach(table => table.hidden = (table.id !==t${idx}));:遍历所有表格。table.hidden是一个HTML属性,设置为true时元素会被隐藏。这里利用模板字符串将表格id(如t1, t2)与下拉菜单的索引关联起来,只有当表格id与当前选中索引匹配时,表格才会被显示(hidden为false),否则被隐藏。

实时刷新机制 (display_c):

setTimeout(disp_TZ, 1000);:每隔1000毫秒(1秒)调用一次disp_TZ函数。setTimeout比setInterval在递归调用时更健壮,可以避免在浏览器标签页不活跃时累积延迟。

事件监听与初始状态:

sel.addEventListener(“change”, disp_TZ);:当下拉菜单选择改变时,更新时间显示。sel.addEventListener(“change”, toggleStyle);:当下拉菜单选择改变时,切换相关表格的显示。toggleStyle();和disp_TZ();:在脚本加载后立即执行这两个函数,以设置页面的初始状态:隐藏所有表格并显示默认时区的时间。

注意事项与优化

代码组织与可读性: 采用const和箭头函数(=>)是现代JavaScript的良好实践,有助于提高代码的可读性和维护性。DOM加载时机: 将JavaScript代码放置在HTML内容的末尾(

以上就是JavaScript实现下拉选择时区并实时显示时间及相关信息的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1538182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在Turbo Streams中实现基于用户权限的动态UI更新
上一篇 2025年12月21日 04:46:48
CefSharp中嵌入Angular应用拖放功能失效的解决方案
下一篇 2025年12月21日 04:46:58

相关推荐

  • 在MySQL中有效处理空值NULL的技巧

    在MySQL中有效处理空值NULL的技巧在MySQL中有效处理空值NULL的技巧在MySQL中有效处理空值NULL的技巧在MySQL中有效处理空值NULL的技巧

    1.在mysql中直接比较null值会出错,因为null代表的是“未知”状态,任何与null的比较结果都是unknown,而不是true或false;2.处理空值应使用is null、is not null判断,使用ifnull提供单一替代值,coalesce按优先级取第一个非null值,以及用nu…

    2026年9月23日 用户投稿
    600
  • 蛙漫2(台版)入口汇总 蛙漫2(台版)正版链接分享

    目前无法在主流应用商店下载蛙漫2(台版),所谓正版链接多为第三方网站或社群分享的APK文件,虽功能丰富但存在安全与版权风险,建议谨慎验证来源并考虑使用KKTV、巴哈姆特等合法平台替代。 关于蛙漫2(台版)的入口和正版链接,目前需要注意一个关键情况:在主流的应用商店(如苹果App Store或各大安卓…

    2026年9月23日
    700
  • MarkLogic搜索结果中total属性的计算机制解析

    MarkLogic搜索响应中的total属性表示匹配查询条件的文档总数估算值。这个值是通过search:search执行“非过滤搜索”(unfiltered search)并结合xdmp:estimate()函数计算得出的,主要依赖于MarkLogic的内部索引进行快速计数,而非逐一检查文档内容,从…

    2026年9月23日
    1200
  • vivoT系列摄像头怎么设置以优化夜景视频录制?夜景视频的调整教程

    使用专业模式调整ISO、快门速度、白平衡并配合三脚架,是提升vivo T系列夜景视频质量的核心方法。 vivo T系列手机要优化夜景视频录制,核心在于善用专业模式,手动调整ISO、快门速度和白平衡,并配合稳定设备如三脚架。虽然手机自带的夜景视频功能很方便,但要追求极致画质和创意表达,精细的手动控制是…

    2026年9月23日
    1100
  • 在PHP中将JSON数组值声明为变量

    本文介绍了如何在PHP中从数据库获取数据并将其编码为JSON数组,然后通过AJAX调用将其传递到另一个页面。重点讲解了如何在接收数据的页面中解析JSON数据,并将JSON数组中的特定值提取为PHP变量,以便在后续的函数或查询中使用。 从数据库获取数据并编码为JSON 首先,我们需要从数据库中获取数据…

    2026年9月23日
    1100
  • 如何在IrfanView中使用AI裁剪图片?快速掌握智能裁剪技巧

    IrfanView无内置AI裁剪功能,需通过安装插件或结合Photoshop、GIMP等专业软件实现智能裁剪;可利用其图像信息、网格显示和批量处理功能辅助人工裁剪决策。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ IrfanView本身并…

    2026年9月23日
    500
  • 浅谈文件系统中的核心数据结构

    浅谈文件系统中的核心数据结构浅谈文件系统中的核心数据结构浅谈文件系统中的核心数据结构浅谈文件系统中的核心数据结构

    在宏观层面上,文件系统在内核中的运作流程可以概括为从虚拟文件系统(vfs)到实际磁盘文件系统的一系列步骤:vfs -> 磁盘缓存 -> 实际磁盘文件系统 -> 通用块设备层 -> io调度层 -> 块设备驱动层 -> 磁盘。具体的操作流程如图所示: 理解文件系统中…

    2026年9月23日 用户投稿
    1000
  • mysql怎么执行连接查询 mysql输入多表关联代码教程

    mysql怎么执行连接查询 mysql输入多表关联代码教程mysql怎么执行连接查询 mysql输入多表关联代码教程mysql怎么执行连接查询 mysql输入多表关联代码教程mysql怎么执行连接查询 mysql输入多表关联代码教程

    mysql多表关联查询的核心是join语句,常见的类型包括inner join、left join、right join和cross join。1. inner join返回两个表中匹配的行,适用于查询有明确关联的数据;2. left join返回左表所有行及右表匹配的行,未匹配列显示为null,适…

    2026年9月23日 用户投稿
    100
  • Java类间访问:解决“无法解析方法”的包管理与导入策略

    本文旨在解决Java开发中常见的跨类数据访问问题,特别是当自定义类与标准库类存在名称冲突时导致的“无法解析方法”错误。我们将通过详细阐述Java包的机制,提供两种解决方案:推荐的包导入方式和在默认包中处理的简单方法,以确保不同类之间能够正确地进行交互和数据共享,从而提升代码的可维护性和健壮性。 引言…

    2026年9月23日
    300
  • 为什么电脑从睡眠模式唤醒后,某些USB设备会无法正常工作?

    电脑唤醒后USB设备失灵通常因电源管理设置、驱动过时或BIOS配置不当。1. 在设备管理器中禁用“允许计算机关闭此设备以节约电源”;2. 更新主板芯片组及USB控制器驱动;3. 确认设备支持S3/S4唤醒并优先连接主板原生接口;4. 进入BIOS开启XHCI Hand-off、关闭ErP以保持待机供…

    2026年9月23日
    1000
  • Figma中如何用AI插件导出透明背景图片?快速保存的指南

    最快速的方法是使用AI背景移除插件。在Figma中安装如“Remove.bg”等插件,选中图片后运行插件自动移除背景,生成透明背景图像,再以PNG格式导出即可。Figma自带导出功能仅支持原生透明图层,无法智能抠图,面对复杂背景需依赖AI插件实现高效精准分离。选择插件时应考量识别精度、处理速度、易用…

    2026年9月23日
    000
  • windows11怎么设置静态ip地址和dns_windows11手动配置IP和DNS的方法

    需要手动设置IP和DNS时,可通过Windows 11设置应用或网络适配器属性配置。首先在“设置”中进入“网络和Internet”,选择当前连接,将IP设置改为“手动”,填写IP地址、子网掩码、默认网关,并在DNS设置中输入首选和备用DNS服务器,如8.8.8.8和8.8.4.4,保存即可;或通过“…

    2026年9月23日
    000
  • 微信视频号怎么推广流量?推广流量能用软文吗?

    在微信生态中,视频号已成为内容创作者和品牌方不可忽视的重要阵地。想要实现有效流量增长,必须结合平台机制与用户使用习惯,通过精准运营策略打通曝光路径。借助内容打磨、生态联动及多维推广手段,可显著提升视频传播力与商业转化能力。 一、如何为微信视频号有效推广引流? 青豆云(https://www.php.…

    2026年9月23日
    500
  • Java中简易聊天室项目实现

    先运行服务器再启动多个客户端实现群聊。服务器监听8888端口,为每个客户端创建线程,接收消息并广播给其他客户端;客户端输入昵称后发送消息,通过独立线程接收广播消息,输入exit退出。 实现一个简易的Java聊天室项目,主要涉及网络编程中的Socket通信、多线程处理多个客户端连接以及简单的I/O操作…

    2026年9月23日
    100
  • 小米RedmiNote微信收款语音怎么设置?快速启用支付播报教程

    首先在微信“收付款”中开启“收款到账语音提醒”;2. 进入Redmi Note系统设置,确保微信通知权限、声音及后台活动均未被限制,避免因MIUI省电策略导致播报失效。 在小米Redmi Note手机上设置微信收款语音播报,其实核心就两步:首先确保微信应用内的收款语音提示功能已开启,然后检查并调整手…

    2026年9月23日
    800
  • MAC的iCloud云盘一直正在上传卡住了怎么办_MAC iCloud云盘上传卡住解决方法

    首先重启iCloud同步进程,通过终端执行killall bird和killall cloudd命令;若无效则清除缓存,关闭应用后在终端运行相关命令并重启Mac;同时检查网络及Apple服务状态,必要时切换网络或重置iCloud云盘;可借助Cirrus工具诊断同步错误并重置卡住文件;最后创建新管理员…

    2026年9月23日
    500
  • VSCode如何实现代码自动补全 VSCode智能提示功能的优化方案

    代码补全失效或变慢通常由语言服务卡顿、项目规模过大、扩展冲突或系统资源不足引起,解决方法包括重启语言服务(如typescript server)、在settings.json中排除node_modules等无关目录以提升性能、更新或禁用冲突扩展,并确保系统资源充足;针对不同语言需进行特定优化:typ…

    2026年9月23日
    300
  • 悟空浏览器如何将网页设为桌面壁纸_悟空浏览器网页桌面壁纸设置方法

    1、打开悟空浏览器进入目标网页,使用底部菜单截图并保存至相册;2、进入手机设置—壁纸与个性化,从相册选择该截图设为主屏壁纸。也可长按网页图片直接选“设为壁纸”,调整后应用。此外,通过分享截图至元气桌面等第三方应用,可进行美化后设为动态或静态壁纸。 如果您希望将悟空浏览器中浏览的网页内容设置为手机桌面…

    2026年9月23日
    000
  • 前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”

    前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”

    谷歌下一代旗舰模型gemini 3未发布便已悄然走红! 原因很简单:强,实在是太强了。 在国外社交媒体平台上,一大波网友激动地分享了 Gemini 3 的内测结果—— 从曝光的这些案例来看,Gemini 3尤为擅长前端、SVG 矢量图生成,而且多模态能力变得更强。 立即学习“前端免费学习笔记(深入)…

    2026年9月23日 用户投稿
    000
  • 如何在Canva中制作AI视频?教你用设计工具创建AI视频的步骤

    答案:Canva通过AI工具提升视频制作效率。明确目标与脚本后,选择模板并替换素材,利用文本生成图像、AI配音、Magic Edit等AI功能增强内容,添加动画、音乐与音效,预览调整后导出视频。结合品牌工具包统一风格,使用演示模式创建交互内容,优化短视频开头、节奏与流行元素,解决版权、图像质量与导出…

    2026年9月23日
    200

发表回复

登录后才能评论
关注微信