`

打BOSS倒计时小程序之一个页面多个计时器并存

    博客分类:
  • JS
 
阅读更多

接着上一篇的操作xml,这一篇写多个计时器并存。

基本业务:点击某行的启动按钮时启动这行的计时器开始倒计时,点击停止时停止计时器停止倒计时。点击“一键启动”将启动勾选游戏的倒计时功能,点击“一键停止”将停止勾选游戏的倒计时。

多个计时器并存的思路是参考的这篇:http://www.cnblogs.com/Jerrycjc/p/4538048.html,以下直接上代码:

1、单个启动和停止

/**
 * 点击“启动”按钮触发该事件,该事件用来开启倒计时功能
 * @param obj:启动按钮A标签
 * **/
function startInterval(obj){
	var $td = $(obj).parent();
	var $tr = $td.parent();
	var $intervalTd = $td.prev();
	var curID = $tr.attr("curID");
	var gameName = $tr.children().eq(gameNameIndex).text();
	
	//1、校验是否启动
	var isStart = $tr.attr("sign");
	//说明已经启动,那么不处理
	if(isStart!=null && isStart!=undefined && isStart=="1"){return false;}
	/*
	//1、校验该按钮是否禁用
	var isDisabled = $(obj).attr("disabled");
	if(isDisabled!=undefined && (isDisabled==true || isDisabled.toString()=="true")){return false;}
	*/
	
	//添加启动标识
	$tr.attr("sign","1");//1:已经启动 0-未启动
	
	//2、移除原有的倒计时样式
	$intervalTd.removeClass("cutDown");
	
	//3、获取倒计时
	editCutDownTime($td);//未倒计时框初始化值
//	var maxTime = parseInt($td.prev().prev().prev().text());//取间隔时间
	var maxTime = parseInt($td.prev().text());//取倒计时时间
	$intervalTd.text(maxTime);//倒计时初始化
	
	//4、设备按钮的状态
	//启动按钮置灰
	disableLink(obj);
	//停止按钮开始
	enableLink($(obj).next()[0]);
	
	//若一开始时间就比提醒时间短,那么需要进行提醒(临时间隔时间)
	if(maxTime<=parseInt(remindTime)){//说明少于提醒时间,那么需要进行提示
		//开启提示音
		playRemindInfo(curID,(gameName+"的大BOSS还有"+(maxTime>0?"还有"+maxTime+"分钟":"已经")+"分钟到达现场!"));
		//添加class
		$intervalTd.addClass("cutDown");
	}
	
	//???对倒计时框进行排序
	sortTable(cutDownIndex,false);
	
	//5、开始倒计时
	var timer = window.setInterval(function(){
		sortTable(cutDownIndex,false);
		if(maxTime>0){//说明倒计时还没有结束
			maxTime--;//减少一分钟
			//倒计时框减少一分钟
			$intervalTd.text(maxTime);
			//alert(maxTime+"\t"+(maxTime<=parseInt(remindTime)));
			if(maxTime<=parseInt(remindTime)){//说明少于提醒时间,那么需要进行提示
				//开启提示音
				playRemindInfo(curID,(gameName+"的大BOSS"+(maxTime>0?"还有"+maxTime+"分钟":"已经")+"到达现场!"));
				//添加class
				$intervalTd.addClass("cutDown");
			}
		}else{//说明倒计时时间为0或者小于0了,那么停止倒计时
			window.clearInterval(timer);
			endInterval($(obj).next()[0],1);//调用停止功能
		}
	},intervalTime);
	
	//6、将计时器存入到map中
	//alert("curID:"+curID+"\t"+timer);
	timerMap.put("curID"+curID,timer);
}

/**
 * 点击“停止”按钮触发该事件,该事件用来停止倒计时功能
 * @param obj:A标签
 * @param flag:1-不需要停止计时器(倒计时为0时自动停止计时器) 2-需要停止计时器
 * **/
function endInterval(obj,flag){
	var $this = $(obj);
	var $parent = $this.parent();
	
	//1、停止计时器
	if(parseInt(flag)!=1){//不为1,即停止计时器
		var curID = $parent.parent().attr("curID");
		var timer = timerMap.get("curID"+curID);
		//alert("计时器:"+timer);
		window.clearInterval(timer);
	}
	
	//2、修改启动状态
	$parent.parent().attr("sign","0");//1:已经启动 0-停止
	
	//3、设备按钮的状态
	//启动按钮 开始
	enableLink($this.prev()[0]);
	//停止按钮置灰
	disableLink(obj);
}

 2、多个启动和停止

/**
 * 点击“一键启动”按钮时触发该事件,该事件用来启动选定的记录
 * **/
function startTheSelected(){
	//1、校验勾选的数量
	var len = $("#"+tableName+">tbody>tr:gt(0)>td>input[type=checkbox]:checked").length;
	if(len<=0){alert("请先勾选要启动的游戏");return false;}
	
	//2、依次循环各个游戏,调用启动方法进行启动
	$("#"+tableName+">tbody>tr:gt(0)>td>input[type=checkbox]:checked").each(function(){
		//var $tr = $(this).parent().parent();
		startInterval($(this).parent().parent().children().eq(btnIndex).children().eq(startBtnIndex).get(0));//调用启动方法进行启动
	});
}

/**
 * 点击“一键停止”按钮时触发该事件,该事件用来停止选定的记录
 * **/
function endTheSelected(){
	//1、校验勾选的数量
	var len = $("#"+tableName+">tbody>tr:gt(0)>td>input[type=checkbox]:checked").length;
	if(len<=0){alert("请先勾选要停止的游戏");return false;}
	
	//2、依次循环各个游戏,调用停止方法进行停止
	$("#"+tableName+">tbody>tr:gt(0)>td>input[type=checkbox]:checked").each(function(){
		//3、校验“启动”按钮是否禁用,即倒计时是否启动,若启动了“启动”按钮是不可点击的
		var $a = $(this).parent().parent().children().eq(btnIndex).children().eq(startBtnIndex);//启动按钮所在a标签
		var isDisabled = $a.attr("disabled");
		if(isDisabled!=undefined && (isDisabled==true || isDisabled.toString()=="true")){//说明勾选的游戏正在启动中,可以停止
			endInterval($a.next().get(0),2);//调用启动方法进行启动:将停止按钮的对象传过去
		}
	});
}

3、禁用和启用A标签

//禁用A标签的点击事件
function disableLink(link) {
	//link.disabled = true;   
	link.setAttribute("disabled",true); 
	link.removeAttribute('href');   
}
//启用A标签的点击事件
function enableLink(link) {
	link.setAttribute("disabled",false);   
	link.setAttribute("href","javascript:void(0);");   
}

4、Map的重写

因为启动时将计时器存入到map里边了,这样停止的时候才知道停止的是哪个。

/* 
 * Map对象,实现Map功能 
 * 
 * 
 * size() 获取Map元素个数 
 * isEmpty() 判断Map是否为空 
 * clear() 删除Map所有元素 
 * put(key, value) 向Map中增加元素(key, value)  
 * remove(key) 删除指定key的元素,成功返回true,失败返回false 
 * get(key) 获取指定key的元素值value,失败返回null 
 * element(index) 获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null 
 * containsKey(key) 判断Map中是否含有指定key的元素 
 * containsValue(value) 判断Map中是否含有指定value的元素 
 * keys() 获取Map中所有key的数组(array) 
 * values() 获取Map中所有value的数组(array) 
 */
function Map() {
	this.elements = new Array();

	//获取Map元素个数 
			this.size = function() {
				return this.elements.length;
			},

			//判断Map是否为空 
			this.isEmpty = function() {
				return (this.elements.length < 1);
			},

			//删除Map所有元素 
			this.clear = function() {
				this.elements = new Array();
			},

			//向Map中增加元素(key, value)  
			this.put = function(_key, _value) {
				if (this.containsKey(_key) == true) {
					if (this.remove(_key) == true) {
						this.elements.push( {
							key : _key,
							value : _value
						});
					}
				} else {
					this.elements.push( {
						key : _key,
						value : _value
					});
				}
			},

			//删除指定key的元素,成功返回true,失败返回false 
			this.remove = function(_key) {
				var bln = false;
				try {
					for (i = 0; i < this.elements.length; i++) {
						if (this.elements[i].key == _key) {
							this.elements.splice(i, 1);
							return true;
						}
					}
				} catch (e) {
					bln = false;
				}
				return bln;
			},

			//获取指定key的元素值value,失败返回null 
			this.get = function(_key) {
				try {
					for (i = 0; i < this.elements.length; i++) {
						if (this.elements[i].key == _key) {
							return this.elements[i].value;
						}
					}
				} catch (e) {
					return null;
				}
			},

			//获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null 
			this.element = function(_index) {
				if (_index < 0 || _index >= this.elements.length) {
					return null;
				}
				return this.elements[_index];
			},

			//判断Map中是否含有指定key的元素 
			this.containsKey = function(_key) {
				var bln = false;
				try {
					for (i = 0; i < this.elements.length; i++) {
						if (this.elements[i].key == _key) {
							bln = true;
						}
					}
				} catch (e) {
					bln = false;
				}
				return bln;
			},

			//判断Map中是否含有指定value的元素 
			this.containsValue = function(_value) {
				var bln = false;
				try {
					for (i = 0; i < this.elements.length; i++) {
						if (this.elements[i].value == _value) {
							bln = true;
						}
					}
				} catch (e) {
					bln = false;
				}
				return bln;
			},

			//获取Map中所有key的数组(array) 
			this.keys = function() {
				var arr = new Array();
				for (i = 0; i < this.elements.length; i++) {
					arr.push(this.elements[i].key);
				}
				return arr;
			},

			//获取Map中所有value的数组(array) 
			this.values = function() {
				var arr = new Array();
				for (i = 0; i < this.elements.length; i++) {
					arr.push(this.elements[i].value);
				}
				return arr;
			};
}

 

 

分享到:
评论

相关推荐

    打BOSS倒计时小程序之在页面上将文字合成语音并播放出来

    【标题】"打BOSS倒计时小程序之在页面上将文字合成语音并播放出来"主要涉及的技术点是网页中的文字转语音(TTS,Text-to-Speech)和音频播放功能,这通常用于提高用户体验,比如游戏倒计时提示、无障碍阅读等场景。...

    计时与倒计时小程序.exe

    时间的观念在现在的时代越来越重要,考试要定时完成,炒菜做饭要计时完成,甚至连煮包泡面都要计时才能更加美味。制作计时器对我们越来越重要。...源代码可见本人"自己制作一个计时器、倒计时器"文章

    电脑桌面倒计时小程序.rar

    而“电脑桌面倒计时小程序”就像一个无声的陪伴者,通过可视化的时间倒计时,不断地激发考生的紧迫感,让他们在紧张的备考生活中保持清醒的头脑和积极的态度。备忘录功能则作为另一种形式的监督,提醒考生坚持和执行...

    微信小程序 辩论倒计时 (源码)

    微信小程序 辩论倒计时 (源码)微信小程序 辩论倒计时 (源码)微信小程序 辩论倒计时 (源码)微信小程序 辩论倒计时 (源码)微信小程序 辩论倒计时 (源码)微信小程序 辩论倒计时 (源码)微信小程序 辩论倒计时 (源码)微信...

    BOSS刷新提醒-倒计时.zip

    在IT行业中,游戏开发是一个非常重要的领域,而“BOSS刷新提醒-倒计时”这样的功能则直指游戏系统的优化和用户体验提升。这个压缩包文件包含了一个名为“BOSS刷新提醒-倒计时.xls”的Excel表格,这通常用于管理游戏...

    打boss计时器辅助.rar

    【打boss计时器辅助.rar】是一个专为游戏爱好者设计的实用工具,它主要用于追踪和管理游戏中的“boss战斗”时间。在许多大型多人在线角色扮演游戏(MMORPG)或团队合作游戏中,boss战往往是游戏的核心部分,挑战强大...

    VB.NET 15分钟倒计时小程序

    【VB.NET 15分钟倒计时小程序】是一款利用Visual Basic .NET(简称VB.NET)开发的简单应用程序,它的核心功能是在屏幕上显示一个15分钟的倒计时计时器。这款小程序对于需要定时提醒或者计时的任务非常有用,比如工作...

    JS一个页面多个倒计时

    在JavaScript(JS)中,实现一个页面多个倒计时功能是一项常见的需求,特别是在电商网站上,如淘宝和京东,用于显示商品秒杀活动的倒计时。这种功能能够吸引用户注意力,增加活动的紧迫感,从而提高转化率。本文将...

    微信小程序-倒计时组件

    总之,微信小程序的倒计时组件是一个强大的工具,它简化了在小程序中实现时间倒计时的过程,让开发者能够更专注于应用的其他功能和用户体验。通过熟练掌握这个组件,初学者可以在短时间内提升开发效率,创造出更具...

    多功能计时器-倒计时器

    "多功能计时器-倒计时器"这款应用程序,正如其标题所示,旨在提供一种高效且灵活的计时解决方案,适应多种场景的需求。 首先,我们来详细探讨倒计时器的核心功能。倒计时器是一种能够从预设时间开始向零倒数的计时...

    倒计时器小程序

    【倒计时器小程序】是一种基于C++编程语言开发的应用程序,它的主要功能是提供一个倒计时的计时工具。在计算机科学中,倒计时器是一个常见且实用的工具,广泛应用于各种场景,如考试倒计时、任务截止时间提醒等。C++...

    用MFC制作一个倒计时小程序

    这个“用MFC制作的倒计时小程序”是一个基于MFC框架开发的实用工具,其核心功能是实现时间的倒计时显示。下面将详细介绍MFC框架以及如何在其中实现倒计时功能。 1. **MFC框架基础** MFC是Windows API的抽象层,它...

    倒计时小程序VB源码.rar

    本压缩包“倒计时小程序VB源码.rar”提供了一个在VB6.0环境下编译运行的倒计时程序实例,旨在帮助用户理解和学习如何利用VB进行基本的计时器应用开发。 1. **倒计时功能实现** - 在VB中,倒计时功能通常通过Tmr...

    微信小程序 电商-拼团 倒计时 (源码)

    微信小程序 电商-拼团 倒计时 (源码)微信小程序 电商-拼团 倒计时 (源码)微信小程序 电商-拼团 倒计时 (源码)微信小程序 电商-拼团 倒计时 (源码)微信小程序 电商-拼团 倒计时 (源码)微信小程序 电商-拼团 倒计时 ...

    微信小程序 倒计时 下载

    对于倒计时,我们需要编写一个计时器函数,它不断更新剩余时间并重绘页面。计时器通常使用`setInterval`函数实现,每秒执行一次,更新时间并检查是否到达零。 3. **数据绑定**:微信小程序采用双向数据绑定机制,这...

    简单小程序倒计时器

    【简单小程序倒计时器】是一个基于HTML和JavaScript的小型应用程序,主要功能是实现一个可定制的倒计时功能。这个程序的特点是可以本地运行,同时也可以部署到服务器上,为用户提供更大的灵活性。用户可以根据需要...

    小程序获取验证码倒计时

    通过查看源代码,开发者可以学习到如何在小程序中实现一个完整的验证码发送与倒计时功能。 总之,小程序获取验证码倒计时是提高用户安全性并优化注册、登录体验的关键步骤。理解其背后的工作原理和实现方式,对于...

    辩论赛计时器微信小程序

    一个非常完整的微信小程序,包括音效、动画、计时器功能,是学习的好例子。

    微信小程序源码-辩论倒计时小程序

    在辩论倒计时小程序中,我们需要创建一个WXML文件来布局计时器的显示,可能包括时间数字、倒计时状态以及按钮等元素。 其次,为了实现计时功能,我们需要编写JavaScript逻辑。微信小程序的JavaScript部分主要负责...

    VC制作的倒计时小程序

    【VC制作的倒计时小程序】是一个利用Visual C++(简称VC)开发的简单应用程序,它的主要功能是帮助用户计算并显示从当前时间到用户自定义日期之间的剩余时间,即倒计时。这个小程序适用于各种场景,比如考试、生日、...

Global site tag (gtag.js) - Google Analytics