开发日常小结(14):项目小功能:实现倒计时功能(js实现),基于java数据传递

用js做一个倒计时(时分秒),js中倒计时器怎么实现 1.核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时 ,但是不能拿着时分秒相减,比如 02 分减去22分,结果会是负数的,所以要转换为毫秒;2.用时间戳来做,用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数;3.把剩余时间总的毫秒数转换为天、时、分、秒 (时间戳转换为时分秒)。利用JavaScript函数做一个简单的倒计时。 阅读详情

2018年5月13日17:26:50

【1】前言

运营部姐姐发来一个留言:加个倒计时吧,这样看着舒服。然后,我就开始重新看模块的相关代码了(了解数据流的传递过程,是非常重要的)。经过努力,还是解决了这个问题,如下图所示:



【2】原理

开发必须注重效率,因此要明确需求:

1)假如查询的玩家没有封号,那就不需要倒计时了;

2)假如查询的玩家被封号了,那就要获取封禁开始时间、封禁所需时间和当前时间了,然后就是js的特效展示;

3)做了倒计时功能还不算结束,因为还要考虑到如下3个问题:

    3.1 倒计时正常结束时,需要自动解封功能的;

    3.2 倒计时还没结束,运营部姐姐点击了解封(强制结束禁封状态),那就需要对倒计时做些动作了;

    3.3 倒计时有了,假如新开了一个标签页,然后对玩家操作,会不会有并发风险??


【3】后端的数据获取(当前倒计时的初值)

忽略掉数据库和企业框架,下面是一段java代码:

	//玩家的是否被封禁的信息
	BlackWhiteListInfo blackWhiteListInfo = blackWhiteListData.getBlackRoleInfo(roleId);
	if(null != blackWhiteListInfo && blackWhiteListInfo.getIsBlockNow()){
		json.element("isBlockNow", true);
		//int leftHours = (int)(blackWhiteListInfo.getExpireTime() - (System.currentTimeMillis() - blackWhiteListInfo.getBlockTime().getTime())/60/60/1000);
		long leftSeconds = (long)(blackWhiteListInfo.getExpireTime()*3600 - (System.currentTimeMillis() - blackWhiteListInfo.getBlockTime().getTime())/1000);
		json.element("leftAccountReleaseHour", leftSeconds/3600);
		json.element("leftAccountReleaseMinute", (leftSeconds%3600)/60);
		json.element("leftAccountReleaseSecond", (leftSeconds%3600)%60);
		json.element("expireTime", blackWhiteListInfo.getExpireTime());
	}else{
		json.element("isBlockNow", false);
		json.element("leftAccountReleaseTime", 0);
		json.element("expireTime", -1);
	}

这里使用了json封装好 leftAccountReleaseHour、leftAccountReleaseMinute、leftAccountReleaseSecond;然后通过request请求,发送给前端页面,这里不做过多讲解;


【4】js实现页面倒计时

大部分的jsp页面获取值,都是用json,这里也不例外;下面是倒计时的相关代码:

1. 

				<div id="unBlockAccount" class="form-horizontal" id="unBlockAccount">
					<label class="text text-center center-block" id="accountDesc">
							距离自动解封时间还有4小时
					</label>
					<button id="unBlockAccountBtn" type="submit" class="btn btn-primary center-block">解封</button>
				</div>

2.

	<script type="text/javascript">
		//开启全局定时器
		var hour = -1;//倒计时
		var minute = -1;
		var second = -1; 
		var state = -1; //0:禁封状态;1:解禁状态或永久禁封
		var intDiff = parseInt(60);
		var timer = window.setInterval(function(){
			if(state == 0){
			    if(intDiff > 0){ //禁封状态
			    	if(second == 0){
			    		if(minute > 0){
				    		second = 60;
				    		minute --;
			    		}else if(minute == 0){
			    			if(hour > 0){
					    		second = 60;
			    				minute = 59;
				    			hour --;
				    		}else if(hour == 0){
				    			//alert("自动解封!!");
		    					state = 1;
			    				$("#unBlockAccountBtn").click();
			    				$("#search-btn").click();
			    			}
			    		}
			    	}
			    	second--;
				    //console.log("test "+hour+":"+minute+":"+second+" state: "+state);
					$("#accountDesc").html("距离自动解封时间还有"+hour+" 小时 "+minute+" 分钟 "+second+" 秒 ");
			    }else if(intDiff == 0){
			    	intDiff = 60;
			    }
			    intDiff--;	
			}
	    }, 1000);
</script>

3.

				$("#forbiddenCount").html("历史被封次数: "+data.forbiddenCount+"次");
	  	 		//判断玩家是已封号还是未被封号
				if(data.isBlockNow){
					//已经被封号
					$("#blockAccount").hide();
					$("#unBlockAccount").show();
					if(data.expireTime == -1){
						$("#accountDesc").html("此账号永久封号,可手动解封");
					}else{
						hour  = data.leftAccountReleaseHour;
						minute = data.leftAccountReleaseMinute;
						second = data.leftAccountReleaseSecond;  
						state = 0;
					}
				}else{
					//未被封号
					$("#blockAccount").show();
					$("#unBlockAccount").hide();
				} 
					

解释:

1、是页面布局控件;

2、倒计时使用的是:window.setInterval(),赋值给一个全局变量;

3、每当刷新页面时,获取json的值,赋值给全局变量(hour、minute和second),并设置状态位;这样每1000ms循环执行一次操作;然后实现倒计时的效果。

4、如果有解封,那么对state变量设置一下即可;定时器是不断地在跑的;


参考:《http://www.jq22.com/jquery-info327》


基于SSM框架的毕业设计管理系统的设计与实现(附资源下载) 我的毕业设计就叫毕业设计管理系统的设计与实现,哈哈 目录 1.摘要 2.需求分析 3.数据库设计 4.功能模块的设计与实现 5.项目截图 6.项目源码 1.摘要 毕业设计是本科教育的最后一个环节,整个过程包括课题拟定与审核、师生双选、开题报告、文档审核、中期检查、毕业答辩等多个环节,是一项系统而复杂的工作。开发一个适合本校的毕业设计管理系统,不仅能够极大地减少教务管理人员的... 阅读详情

相关推荐

深入理解C++23的Deducing this特性(上):基础概念与语法详解

C++23标准中引入的"Deducing this"特性是一项重大革新,它不仅改变了我们编写成员函数的方式,还为模板元编程和设计模式实现带来了新的可能。

weixin_61470881的博客 1333

JavaScript实现倒计时功能

本文主要介绍JavaScript中封装时间函数和如何倒计时功能,没有拐弯抹角,拿走即用。

modao的博客 6517

基于C#的跨平台上位机开发:一次编写,多平台运行

摘要: 本文探讨了如何利用C#进行跨平台上位机开发,以适配Windows、Linux、macOS等多平台需求。通过分析传统单平台开发的局限性(如API差异、硬件接口兼容性),提出基于.NET 5/6/7的解决方案,重点推荐Avalonia(类WPF的跨平台UI框架)和GtkSharp(基于GTK+)实现图形界面。同时,针对硬件通信需求,介绍了System.IO.Ports串口通信和LibUsbDotNet的跨平台支持,并强调多平台调试(VS Code、Docker)的重要性,最终实现一次编码、多端部署的高效

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1409

用javascript编写倒计时

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style type="text/css"> .Mainshow{ width: 1000px; margin: 0 200px; height: 50.

m0_58451019的博客 1143

ADS(Arm Developer Suite)安装的坑!

实验课老师让我们区安装ADS,作为嵌入式开发的工具,原本以为这只是一个简单的软件,但是当我安装的时候,我才发现这软件太难了!安装了我大半天,看了其他的博客之后,最终才安装成功???????? 安装过程的一个巨坑就是:安装路径!以及安装许可注册文件 如果没有注意路径,最后安装成功以后打开软件就是蜜汁报错???? 报错了怎么办?删掉已安装的东西,重新安装吧,而且要删干净 再次安装的时候,打开安装包是这个提示...

weixin_42795819的博客 8218

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2623

Java时间类型以及前端和数据端的传输

Date虽然sql也有一个Date类,但其实相对而言,用的更多的是util包下的Date,所以也就以util包下的Date为例构造方法Date():获取当前系统的的时间Date(Long millisec):获取传入的时间戳(毫秒数)的时间(时间戳是 1970 年 1 月 1 日(00:00:00 )至当前时间的总秒数;)对于Date有几个常用的方法long getTime( ):返回自1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数.

weixin_44691025的博客 5324

个人量化系统的策略集合与赚钱之道:全栈深度解析 + 与主流开源框架对比

前三篇把系统的"骨架"拆完了——架构、工程化、部署。本篇回答最关键的问题:一句话:别人的系统是"程序员的系统"(写代码才能加策略),daily_stock_analysis 是"股民的 YAML"(写中文就能加策略)。这个差异决定了它能在多大程度上真的帮你赚钱。如果你用过 、、,加一个策略的流程是: 问题在哪?在 daily_stock_analysis 里,“策略” = 一个文件。每个 YAML 是一个自然语言描述的交易策略,包括: 看到没? ——整个策略就是一段中文,零代码。任何会写字的人都能加新策略

shiter编写程序的艺术 153

js实现倒计时效果

既然是倒计时,肯定是要涉及到时间日期的操作了。js 里可以用 new Date() 来创建各种格式的时间日期。还涉及到定时器的使用。计算出当前时间和目标时间的时间差,还要对剩余时间做下处理,得出时、分、秒,然后通过重复调用,每隔 1 秒刷新一次就实现了。

徐三岁的博客 1408

2023年全国职业院校技能大赛“信息安全管理与评估”-真题——赛题题目+答案解析

2023年全国职业院校技能大赛“信息安全管理与评估”-真题——赛题题目+答案解析

君逍遥o 6004

ParaView :在paraview创建渲染视图

ParaView :在paraview创建渲染视图

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1306

java简易计时器的实验总结,开发日常小结(14):项目小功能:实现倒计时功能(js实现),基于java数据传递...

2018年5月13日17:26:50【1】前言运营部姐姐发来一个留言:加个倒计时吧,这样看着舒服。然后,我就开始重新看模块的相关代码了(了解数据流的传递过程,是非常重要的)。经过努力,还是解决了这个问题,如下图所示: 【2】原理开发必须注重效率,因此要明确需求:1)假如查询的玩家没有封号,那就不需要倒计时了;2)假如查询的玩家被封号了,那就要获取封禁开始时间、封禁所需时间和当前时间了,然后就是js...

weixin_31009269的博客 441

人体红外传感器HC-SR501

本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。

weixin_43772611的博客 1万+

javaScript 中的一些日常用法总结

从今天开始把开发中常用到的js语法 一一记录下来 方便以后复习回顾用; 1:对字符串进行替换replace 以及replaceAll replace : var begin_date =begin.replace("-",""); replaceAll: 1 var begin_date =begin.replaceAll("-",""); 总结repl...

weixin_34242509的博客 128

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【课程设计】基于Java的学生请销假审批管理系统的设计与实现毕业设计源码130939

系统中的核心用户是系统管理员,管理员登录后,通过管理员菜单来管理后台系统。主要功能有:首页、用户管理、公告通知、请假申请、请假审批等功能 用户进入系统可以进行首页、通知公告、请假审批、请假申请等功能操作。...

专业程序开发源的博客 5200

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ssm企业办公平台6wwzi(程序+源码+数据库+调试部署+开发环境)

随着信息技术的飞速发展,企业办公方式正逐步向数字化、智能化转型。传统办公模式存在沟通不畅、信息孤岛、流程繁琐等问题,影响了工作效率和团队协作能力。因此,构建一套集成化、智能化的企业办公平台,成为提升企业管理水平和运营效率的关键。

Kittyxia001的博客 1129

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

(附源码)基于Java SpringBoot的电影院管理系统设计与实现-毕业设计 课程设计 011633

电影管理: (1)电影列表:展示所有电影,形成的列表样式。 (2)电影搜索:通过电影名、电影类目来搜索电影。 (3)图片上传:给电影添加电影图片。 (4)增加电影; (5)更新电影:更新电影的,如电影名称、电影分类、电影海报、导演、演员、上映日期、放映场次、放映时间、放映厅、影院名称、影院地址、价格、座位总数等。 (6)电影上下架; 资讯数据管理: (1)图片上传:给资讯添加资讯图片。 (2)增加资讯; (3)更新资讯:更新资讯的,如资讯标题、内容等。 (4)资讯数据删除销毁; 选座预订记录管理: ……

Q_3461074420的博客 1万+

JSP银行OA系统2xkom程序+源码+数据库+调试部署+开发环境

在金融科技迅猛发展、银行业务日益复杂的当下,传统办公模式效率低、信息传递不及时等问题凸显。银行OA系统作为现代化办公的关键工具,能有效整合银行内部资源,打破部门壁垒,实现信息的快速流通与共享。通过自动化流程处理,可大幅减少人工操作,降低出错率,提升银行整体运营效率与决策科学性,增强市场竞争力,对银行的数字化转型与可持续发展意义重大。

Kittyxia001的博客 1009

【课程设计】(附源码)Springboot+mysql+基于VUE框架的商城综合项目设计与实现 毕业设计111612

本商城综合项目采用的数据库是Mysql,使用java技术开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

Biye_Design的博客 4735

Java项目:149 基于SSM的毕业设计管理系统

毕业设计是本科教育的最后一个环节,整个过程包括课题拟定与审核、师生双选、开题报告、文档审核、中期检查、毕业答辩等多个环节,是一项系统而复杂的工作。开发一个适合本校的毕业设计管理系统,不仅能够极大地减少教务管理人员的工作量,还能较大地提高学生和教师的效率。本系统采用B/S模式,主要开发工具为Eclipse/Idea(Oxygen.1a Release),用到的编程语言有Java、JavaScript和JSP,数据库采用MySQL 5.7,服务器则用的Apache Tomcat 9.0。

舒克日记的博客 1019

基于nodejs+vue基于Java的信公OA办公系统[开题+源码+程序+论文]计算机毕业设计

研究基于Java的信公OA办公系统,对于推动企业的数字化转型具有重要意义。该系统能够整合企业内部的各类资源,实现信息的快速传递和共享,减少人工操作的繁琐和错误。同时,通过系统化管理,可以规范企业的业务流程,提高工作效率。此外,该系统还具备较高的安全性和稳定性,能够保障企业数据的安全性和完整性。因此,研究和开发这一系统不仅有助于提升企业的竞争力,还能为企业的可持续发展奠定坚实的基础。

星海学长_毕设 662

JavaScript数字格式化:保留两位小数的精确实现与避坑指南

数字格式化是前端开发中的基础技术,尤其在金融、电商等业务场景中,精确控制小数位数至关重要。其核心原理涉及JavaScript的浮点数表示(IEEE 754标准)和舍入规则。理解并正确处理精度问题,能有效避免UI显示异常和金额计算错误等风险,提升应用的健壮性。本文聚焦于保留两位小数这一高频需求,深入剖析了`toFixed`方法的银行家舍入法陷阱、浮点数精度误差等常见问题,并提供了基于`Math.round`配合乘除法、字符串解析以及`Number.EPSILON`校正等工程实践方案,帮助开发者在不同业务场景下

weixin_30847939的博客 431

基于ssm+vue日常分享网络平台【开题+程序+论文】-计算机毕业设计

其次,重点开发日常分享功能,支持用户发布文字、图片、视频等多种类型的分享内容,并通过标签、分类等方式实现内容的组织与管理。因此,构建一个专注于日常分享的网络平台,旨在为用户提供一个更加自由、便捷、富有情感共鸣的空间,成为当前互联网领域的热点话题。该平台将融合用户日常生活的点滴,通过多样化的分享类型,促进用户间的情感交流与信息互通,满足现代人对社交的多元化需求。其次,通过精准定位用户需求,设计并优化平台功能,如用户画像构建、智能推荐系统等,能够有效提升用户粘性,促进社区文化的形成。

永恒毕设程序 861

【课程设计】(附源码)springboot水环境检测系统的设计与实现 毕业设计041446

系统主要针对水环境监测业务开展,涉及监测点管理、水环境监测数据管理、项目信息管理等方面。本设计主要实现集人性化、高效率、便捷等优点。系统使用Java语言的Springboot框架,采用MVVM模式进行开发,数据方面主要采用的是微软的Mysql关系型数据库来作为数据存储媒介,配合前台技术完成系统的开发。

Biye_Design的博客 4264

JAVA-WEB

文章目录1. JAVA-WEB介绍2. HTML3. CSS样式4. JavaScript5. Vue.js6. xml解析7. Tomcat服务器8. http协议9. Servlet10. Thymeleaf11. Cookie与Session12. Ajax13. Filter14. 监听器15. WEB组件注解用法16. 事务控制 1. JAVA-WEB介绍 2. HTML 3. CSS样式 4. JavaScript 5. Vue.js 6. xml解析 7. Tomcat服务器 8. http协

weixin_58005665的博客 1060

java+vue计算机毕设小学学生家校联系系统的设计与实现【源码+开题+论文】

随着信息技术的飞速发展,教育领域正经历着前所未有的变革。小学作为学生教育生涯的起点,其教育质量直接关系到学生的未来发展。然而,在传统家校沟通模式中,信息的传递往往受限于时间和空间的限制,导致家校之间的合作不够紧密,家长难以及时了解学生在校情况,教师也难以全面掌握学生的家庭环境和学习习惯。因此,开发一款高效、便捷的小学学生家校联系系统显得尤为重要。该系统旨在打破传统沟通壁垒,通过数字化手段实现家校信息的无缝对接,促进家校共育,共同为学生的健康成长和学习进步创造良好的环境。

sheji310的博客 783
上一篇: java基础(44):数组转列表 -- Arrays.asList()的使用
下一篇: 开发日常小结(10):项目如何使用图片服务器API?
后台技术汇
博客等级 码龄11年 670粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后台技术汇

对你的帮助,是对我的最好鼓励。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值