`

JS+JQuery 时间控制面板

阅读更多
JS+JQuery  上网时间控制效果。。
鼠标在面板上拖动  选择时间,点击确定,可以得到封装的一字符串!
跟字符串,可以初始化一个时间控制面板。。



//上网时间控制核心代码。。。。 
//hong.timeweek.js

// 的唯一标识拼接XML时需要使用
$(document).ready(function() {
			createDIVTIMESET("#Chat");
		});
var _selectColor = 'green';// 选择后的颜色
var _unselectColor = '#EDEDED';// 选择前的颜色

var _selectInColor = 'red';// 选择后鼠标移入
var _unSelectInColor = '#E0FFFF';// 选择前鼠标移入

var _tempIsClickToDiv = false;// /临时变量 用于记录 当前操作 是否为点击选择时间
var _weekClass = [['', ' '], ['Mon', '一'], ['Thes', '二'], ['Wed', '三'],
		['Thurs', '四'], ['Friday', '五'], ['Sat', '六'], ['Sun', '七']];// 代表每一行
/**
 * 初始化 事件注册
 */
function registerEvent(objId) {
	// 点击变色 时间控制
	$(objId+" .setTimeItem a").mouseover(function() {
		(_tempIsClickToDiv) ? _changeColorToDiv(this,objId) : null;
		($(this).css("backgroundColor",
				(($(this).css("backgroundColor") == _selectColor)
						? _selectInColor
						: _unSelectInColor)));
	}).mousedown(function() {
				_changeColorToDiv(this,objId);
			}).mouseup(_changeStateToTiv).mouseout(function() {
		($(this).css("backgroundColor",
				((($(this).css("backgroundColor") == _selectColor) || ($(this)
						.css("backgroundColor") == _selectInColor))
						? _selectColor
						: _unselectColor)));
	});
	// 点击变色 时间控制
	$(document).click(_changeStateToTiv).mouseup(_changeStateToTiv).mousedown(
			function() {
				_tempIsClickToDiv = true;
			});
}
/**
 * 清空
 * 
 * @param {Object}
 *            divID
 */
function clearTimeToDiv(divID) {
	$("#" + divID + " a").css("backgroundColor", _unselectColor);
}
/**
 * 根据 一个DIV 创建一个 时间控件
 * 
 * @param {Object}
 *            obj DIV对象
 */
function createDIVTIMESET(objId) {
	obj = $(objId);
	var obj_v=$(objId+"_V");

	if (obj) {
		try {
			var setITEMCSSHand = "setTimeHand ";// 后面必须有个空格
			var setITEMCSSItem = "setTimeItem ";
			var oldvalue = _convertXMLTOArrayByTime($(obj_v).html(), _weekClass);
			$(obj).html("").css("width", "540px");
			$(_weekClass).each(function(index, value) {
				var targetCSS = value[0];// 标签TAG值或CSS Name
				var html = "<div class='"
						+ ((index == 0) ? setITEMCSSHand : setITEMCSSItem)
						+ targetCSS + "'><div>" + value[1] + "</div>";
				for (var i = 1; i <= 24; i++) {
					html += "<div>";
					if (index == 0) {
						html += (i < 10) ? ("0" + i) : i;
					} else {
						var v1 = (i * 2 - 1), v2 = (i * 2);
						html += "<a style='background-color:"
								+ (_checkNumberInArray(v1, oldvalue[index - 1])
										? _selectColor
										: _unselectColor)
								+ "' id='"
								+ v1
								+ "'></a><a style='background-color:"
								+ (_checkNumberInArray(v2, oldvalue[index - 1])
										? _selectColor
										: _unselectColor) + "' id='" + v2
								+ "'></a>";
					}
					html += "</div>";
				}
				html += "</div>";
				$(obj).html($(obj).html() + html);
			});
		} catch (e) {
		}
	}
	registerEvent(objId);
}

/**
 * 得到时间的值
 * 
 * @param {Object}
 *            divClass
 */
function getTimeByValueToDiv(divId) {
	try {
		var timesString = "";
		// 循环所有的周
		$(_weekClass).each(function(index, domValue) {
			if (index != 0) {
				var times = []// 存取 所有的天
				// 循环所有的天 取出 选中的天
				$("#" + divId + " ." + domValue[0] + " a").each(
						function(index, domElm) {
							if ($(domElm).css("backgroundColor") == _selectColor) {
								times.push(domElm.id);
							}
						});
				var timeStr = "<" + (label = domValue[0]) + "s>";// 取得标签//循环取出的天,然后拼字符串
				timesString += (timeStr + _getXMLDataByTime(times, label)
						+ "</" + label + "s>");
			}
		});
	} catch (e) {
	}
	$("#"+divId+"_V").html(timesString);
	//alert(divId + "=" + timesString);
}

/**
 * 拼接 时间字符串
 * 
 * @param {Object}
 *            times 时间数组
 * @param {Object}
 *            label 标签
 */
function _getXMLDataByTime(times, label) {
	// 0 1.5 00:00-01:30
	var strXML = "";
	if (times.length > 0) {
		var hand = times[0];
		for (var i = 0, len = times.length - 1; i <= len; i++) {
			if (i != len && (parseInt(times[i]) + 1 == parseInt(times[i + 1]))) {
				/** 如果当前与下一个是连续的* */
				continue;
			} else {
				strXML += "<" + label + ">" + this._getTimeString(hand - 1)
						/** 前半小时 需要减1即减半小时* */
						+ "-" + this._getTimeString(times[i]) + "</" + label
						+ ">";
				((i != len) ? hand = times[i + 1] : null)
			}
		}
	}
	return strXML;
}

/**
 * 得到时间字符串
 * 
 * @param {Object}
 *            number 代表时间的数字
 */
function _getTimeString(number) {
	var number2 = parseInt(number = number / 2);
	return ((number < 10) ? "0" : '') + number2.toString()+":"
			+ ((number == number2) ? "00" : "30");
}

/**
 * 改变背景颜色
 * 
 * @param {Object}
 *            that 改变的对象
 */
function _changeColorToDiv(that,objId) {
	that = that.style;
	that.backgroundColor = (((that.backgroundColor == _selectColor) || (that.backgroundColor == _selectInColor))
			? _unselectColor
			: _selectColor);
}

/**
 * 改变状态
 * 
 * @param {Object}
 */
function _changeStateToTiv() {
	_tempIsClickToDiv = false;
}

/**
 * 检查一个数字是否存在于这个数组
 * 
 * @param {Object}
 *            num 数字
 * @param {Object}
 *            arr 数组
 */
function _checkNumberInArray(num, arr) {
	for (var i in arr)
		if (arr[i] == num)
			return true;
	return false;
}

/**
 * 把时间字符串 转换为 时间数组
 * 
 * @param {Object}
 *            valueXML XML 数据
 * @param {Object}
 *            _weekClass TAG 数组
 */
function _convertXMLTOArrayByTime(valueXML, _weekClass) {
	valueXML=valueXML.toUpperCase();
	valueXML=valueXML.replace('\N','');
	var objA = [];
	$(_weekClass).each(function(index, value) {
		var tag = value[0].toUpperCase();
		if (index > 0) {
			// 取出每天的时间字符串
			var startTag = "<" + tag + "S>";
			var index = valueXML.indexOf(startTag) + startTag.length;
			var indexEnd = valueXML.indexOf("</" + tag + "S>");
			var XML = valueXML.substr(index, indexEnd - index);
			var objSub = [];// 把每天转换为 数字
			while (XML.length > tag.length) {
				startTag = "<" + tag + ">";
				index = XML.indexOf(startTag) + startTag.length;
				indexEnd = (XML.indexOf("</" + tag + ">"));
				var arrTimesNumber = _getArrayNumbetByTimeString(XML.substr(
								index, indexEnd - index), objSub);
				XML = XML.substr(indexEnd + tag.length, XML.length - indexEnd);// 字符串转换XML
			}
			objA.push(objSub);
		}
	})
	return objA;
}

/**
 * 返回 代表时间的数组
 * 
 * @param {Object}
 *            timeStr 时间字符串
 * @param {Object}
 *            objSub 数组 里面的数据不有更改,只能添加
 */
function _getArrayNumbetByTimeString(timeStr, objSub) {
	var time1 = timeStr.substr(0, 5);
	var time2 = timeStr.substr(6, 5);
	var tA = parseFloat(parseFloat(time1.substr(0, 2)) + "."
			+ ((parseInt(time1.substr(3, 2)) > 0) ? "5" : "0"))
			* 2 + 1;
	var tB = parseFloat(parseFloat(time2.substr(0, 2)) + "."
			+ ((parseInt(time2.substr(3, 2)) > 0) ? "5" : "0"))
			* 2;
	for (; tA <= tB; objSub.push(tA), tA++);
	return objSub;
}





//页面代码。。。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>fds</title>
		
    <script type="text/javascript" src="jquery-1.2.6.js"></script>
    
    <script type="text/javascript" src="hong.timeweek.js"></script>
 
    <link type="text/css" href="hong.timeweek.css" rel="stylesheet" />
    
  </head>
  <body>
  <div id="Chat_V"><Mons><Mon>01:00-02:30</Mon></Mons><Thess><Thes>04:30-14:30</Thes></Thess><Weds><Wed>13:30-19:00</Wed></Weds><Thurss><Thurs>15:30-20:00</Thurs></Thurss><Fridays><Friday>03:00-15:00</Friday></Fridays><Sats><Sat>11:00-16:00</Sat></Sats><Suns><Sun>08:00-10:00</Sun><Sun>10:30-11:30</Sun><Sun>12:30-16:00</Sun></Suns></div>
  <div class="time_xs" id="Chat" ></div>
  <input type="button" value="Clear" onclick="clearTimeToDiv('Chat');"/>
  <input type="button" value="Finish" onclick="getTimeByValueToDiv('Chat');" />
  </body>
</html>



.setTimeHand {
    text-align: center;
    vertical-align: middle;
    color: #5DB11E;
    margin-left: 10px;
    height: 23px;
}

.setTimeHand div {
    width: 17px;
    height: 15px;
    border: 1px solid #CFCFCF;
    float: left;
    margin: 1px;
    background-color: #EDEDED;
    color: #454545;
}

.setTimeItem {
    text-align: center;
    vertical-align: middle;
    color: #5DB11E;
    margin-left: 10px;
    height: 20px;
}

.setTimeItem div {
    width: 17px;
    border: 1px solid #B0C4DE;
    float: left;
    margin: 1px;
    background-color: #EDEDED;
    color: #454545;
    height: 15px;
}

.setTimeItem div a {
    float: left;
    width: 8.5px;
    background-color: #EDEDED;
    border: 0;
    margin: 0;
    padding: 0;
    cursor: hand;
    height: 100%;
}

.setTimeItem div a:hover {
    background-color: #90EE90;
}


  • 大小: 6.6 KB
0
1
分享到:
评论

相关推荐

    JavaScript+jQuery网页特效设计实例源码

    JavaScript 和 jQuery 是网页开发中两种非常重要的技术,它们在创建动态、交互式的网页效果方面扮演着关键角色。在这个"JavaScript+jQuery网页特效设计实例源码"的压缩包中,我们很可能会找到一系列实用的代码示例,...

    js+jquery实现风琴图.rar

    在风琴图的实现中,HTML 用于创建基本的页面结构,CSS 用于样式化元素,使其看起来美观,而 JavaScript 和 jQuery 则负责处理用户交互,控制各个面板的展开和关闭。以下是一些关键知识点: 1. HTML 结构:风琴图...

    java web ui HTML+css+JS+jQuery+jQuery Mobile

    Java Web UI设计是构建Web应用程序用户界面的关键技术,它涵盖了多种技术,如HTML、CSS、JavaScript以及jQuery和jQuery Mobile。这些技术共同作用,为用户提供直观、动态且响应式的交互体验。 HTML(超文本标记语言...

    PHP+jQuery+Flash完美演示翻盘抽奖

    2. 集成jQuery:Flash可以与JavaScript进行交互,使得jQuery可以控制Flash对象的某些行为,如启动翻盘动画。 3. 提供跨平台兼容性:尽管现代Web开发倾向于使用HTML5,但Flash在某些老版本浏览器中仍能提供良好的支持...

    JavaScript+jQuery网页特效设计实例教程源码

    JavaScript 和 jQuery 是网页开发中两种非常重要的技术,它们在创建交互式和动态网页效果方面起着关键作用。本教程源码旨在帮助初学者和进阶开发者深入理解和实践这两种语言的结合,通过实例来掌握网页特效设计。 ...

    JS+JQuery+css3留言表情

    在IT行业中,JavaScript(JS)、jQuery和CSS3是前端开发中的三大重要技术,它们共同构建了丰富的用户体验和交互效果。本文将深入探讨这三种技术在实现"留言表情"功能中的应用。 首先,JavaScript是一种轻量级的解释...

    JavaScript & jQuery 交互式Web前端开发

    更高效的学习JavaScript和jQuery,快速成为一名Web前端工程师,零基础快速掌握 作者:(美)达科特(Duckett, J.)出版社:清华大学出版社 第1章 编程基础知识 第2章 JavaScript基础指令 第3章 函数、方法与对象 第4章 ...

    Ajax+extjs+jquery+javascript必备开发帮助文档

    2. 组件系统:包括各种可复用的 UI 控件,如表格、面板、窗口等。 3. 数据绑定:自动同步视图和模型的数据,简化了数据管理。 4. 动态布局:支持多种布局模式,适应不同屏幕尺寸和设备。 5. 表格和网格:强大的数据...

    html+Dhtml+css+jquery+Ext 3.0

    jQuery是一个流行的JavaScript库,它简化了JavaScript的DOM操作、事件处理、动画制作和Ajax交互。jQuery的核心特性包括链式调用、选择器引擎、高效DOM操作等。例如,`$("p").click(function() { $(this).hide(); })`...

    Ext+json,+jquery培训资料

    jQuery则是一个轻量级的JavaScript库,简化了DOM操作、事件处理和动画效果。 1. **EXT开发技术准备**: - EXT的核心是基于JavaScript和DOM,它提供了一套完整的UI组件和布局管理。 - JSON(JavaScript Object ...

    ssh+jquery ui

    jQuery UI则是一个基于jQuery JavaScript库的用户界面插件集合,提供了丰富的交互效果和可自定义的主题,如对话框、拖放功能、日期选择器等,用于提升Web应用的用户体验。 在这个项目中,SSH框架主要负责后端业务...

    JQuery实现的购物网站

    在Web开发领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。在这个名为"JQuery实现的购物网站"的项目中,我们可以看到如何利用jQuery UI来构建一个功能...

    jquery展开折叠面板特效

    jquery展开折叠面板特效,javascript

    jQuery简易单面板日历选择插件.zip

    【jQuery简易单面板日历选择插件】是一个利用JavaScript库jQuery开发的轻量级日历选择工具,专为简化网页中的日期输入而设计。在网页交互设计中,日期选择功能是常见的需求,尤其是在表单填写或者事件预订等场景。这...

    学习高级项目,extjs + ssh + jquery .rar

    jQuery是一个广泛使用的JavaScript库,简化了DOM(文档对象模型)操作、事件处理、动画和Ajax交互。在项目中,jQuery可以用于优化页面的交互效果,简化前端JavaScript代码,使页面响应更快,用户体验更佳。 **4. ...

    phonegap+jqueryMobile例子

    PhoneGap和jQuery Mobile是两种非常重要的移动应用开发技术,它们结合使用可以构建跨平台的、交互性强的原生感观应用程序。在这个“phonegap+jqueryMobile例子”中,我们将深入探讨这两个工具如何协同工作,以及如何...

    CSS3+jQuery横向手风琴折叠效果.zip

    例如,当用户点击一个面板的标题时,jQuery会选择对应的面板内容,通过修改其`display`属性来控制内容的显示与隐藏。 HTML5则提供了结构化文档的基础,通过使用语义化的标签(如`&lt;section&gt;`、`&lt;article&gt;`、`...

    jQuery_easyui+jQuery1.7API

    jQuery EasyUI 是基于jQuery的一个轻量级的前端框架,它提供了一系列的JavaScript组件,如对话框(Dialog)、表格(Grid)、表单(Form)、菜单(Menu)等,帮助开发者快速构建用户界面。EasyUI的主要优点在于其简洁...

    jquery制作滑动面板

    在JavaScript的世界里,jQuery是一个非常流行的库,它简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。本教程将深入讲解如何使用jQuery来创建一个滑动面板,这是一种常见的网页交互元素,常用于导航菜单、侧...

Global site tag (gtag.js) - Google Analytics