COOL而实用的动态效果

最近在做项目的时候,客户要求表格里的数据可以拖选,于是用JS写了个下面的方法。支持IE、FIREFOX等浏览器。实现对整行、整列数据的选取,全选、反选、清除,在数据表格内拖拉出的矩形范围的单元格数据全选。

PS:

1.如果数据单元格没有数据,请将ID设为空或去掉ID,样式为"inactive".则选择时会跳过此单元格。

2.如果不想某个单元格被选,请将class设为“bg_green”,则选择时会跳过此单元格。

calendar

/*button style*/
.button{
padding: 2px;
color: #F5F5F5;
background-color: #3665A5;
border-width: 1px 2px 2px 1px;
border-color: #D2D2D2 #305B93 #305B93 #D2D2D2;
border-style: solid;
font: bold 14px verdana;
}

body,td{margin:0;font:12px verdana;cursor:default;}
#ca td{/*width:20px;height:25px;*/border-right:1px solid;border-bottom:1px solid;text-align:center;}
.daysTitle td{border-right:1px solid #A6D2FF;text-align:center;font-weight:bold;}
.font_red{color:red;}
.monthsTitle td{border-bottom:1px solid #A6D2FF;text-align:center;color:#fafafa;}
.bg_red{background-color:#FF0000;color:#FFFFCC; border-color:#FFCCCC;}
.bg_green{background-color:#00CC00;}
.inactive{background-color:#E1F0FF; border-color:#A6D2FF;}
.noData{background-color:#ccc; border-color:#999;}

/******************************************************************
此代码为FLYINGFISH原创,你可以免费使用,修改完善。但作为对作者和对你自己的尊重,务必保留此原始版权信息,
DESIGNED BY: flyingfish
WEB SITE: www.yu5911.cn
EMAIL:penglongxiang@gmail.com
QQ: 55856710

******************************************************************/

Array.prototype.remove = function(index){
if(isNaN(index)||(index>=this.length)||(index

Array.prototype.del=function(n) { //n表示第几项,从0开始算起。
//prototype为对象原型,注意这里为对象增加自定义方法的方法。
if(n

Array.prototype.indexOf = function(value){
for(var i=0;i

Array.prototype.contains = function(value){
return this.indexOf(value)>=0;
}

Array.prototype.clear = function(){
while(this.length>0) this.remove(this.length-1);
}

Array.prototype.add = function(index,value){
if(value==undefined) this.put(index);
else{
var len = this.length;
this.push(this[len-1]);
for(var i=len-1;i>index;i--) this[i] = this[i-1];
this[index] = value;
}
}

Array.prototype.put = function(value){
if(!this.contains(value)) this.push(value);
}

Array.prototype.circle = function(degressive){
if(degressive){
var a = this[0];
for(var i=0;i0;i--) this[i] = this[i-1];
this[0] = a;
}
}
var selectedID = new Array()
var months,days,temp_m,temp_d,temp_m1,temp_d1,isSelected=false,datedata="";

//document.write('

')
for(t=1;t'
for(i=1;i'+i+'

'
}
datedata =datedata +'

'
}
datedata = '

'+datedata+"

"
//document.write('

')

function selectDate(startM,endM,startD,endD){
for(m = startM;m共选中"+selectedID.length+"个数据"+selectedID;
}
function selectAll(v){
if(v){
resetAll();
selectDate(1,months,1,days)
}else{
selectDate(1,months,1,days)
}
}
function resetAll(){
if(selectedID.length>0){
for(k=1;k共选中"+selectedID.length+"个数据"+selectedID;
}
}
function selectMonth(month){
month = month.parentNode.rowIndex+1
selectDate(month,month,1,days)
}
function selectDay(day){
day = day.cellIndex + 1;
selectDate(1,months,day,day)
}

window.onload=function ()
{
dayObj = document.getElementById("days");
monthObj = document.getElementById("months")
days = dayObj.rows[0].cells.length //get days
months = monthObj.rows.length // get Months
var obj=document.getElementById("dataTable");
var eventObj;
//creatDateData
document.getElementById("dataTable").innerHTML=datedata

//document.body.innerText=document.body.innerHTML

obj.onmousedown=function(event)
{
if(event == null){
event = window.event; // For IE
}
var eventObj = event.srcElement? event.srcElement : event.target; // IE use srcElement, Firefox use target
if(eventObj.tagName=="td"||eventObj.tagName=="TD")
{
xy=eventObj.getAttribute("name").split("d");
temp_d=parseInt(xy[1])
temp_m=parseInt(xy[0].split("m")[1])
selectDate(temp_m,temp_m,temp_d,temp_d)
}
}

obj.onmouseup=function(event)
{
if(event == null){
event = window.event; // For IE
}
var eventObj = event.srcElement? event.srcElement : event.target; // IE use srcElement, Firefox use target
if(eventObj.tagName=="td"||eventObj.tagName=="TD")
{
xy=eventObj.getAttribute("name").split("d");
temp_d1=parseInt(xy[1])
temp_m1=parseInt(xy[0].split("m")[1])
sM=temp_m

2006
" name=Submit4>

M T W T F S S M T W T F S S M T W T F S S M T W T F S S M T W T F S S M T W T F S S

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • COOL而实用的动态效果

    最近在做项目的时候,客户要求表格里的数据可以拖选,于是用JS写了个下面的方法.支持IE.FIREFOX等浏览器.实现对整行.整列数据的选取,全选.反选.清除,在数据表格内拖拉出的矩形范围的单元格数据全选. PS: 1.如果数据单元格没有数据,请将ID设为空或去掉ID,样式为"inactive".则选择时会跳过此单元格. 2.如果不想某个单元格被选,请将class设为"bg_green",则选择时会跳过此单元格. calendar /*button style*/ .

  • 实用的js 焦点图切换效果 结构行为相分离

    焦点图切换效果,对前端来说,恐怕再熟悉不过了,实现它的方法应该有多种,工作当中常用的一种,叙述如下: 如何让当前的数字导航与图片的显示同步? 这里有两个区域,图片切换区和数字导航区:分别对应着两个循环函数:plays(value)和setBg(value): 当图片循环切换到第2张时,此时数字导航的当前状态也变换到第2的位置,以此达到一种同步的效果,这里的关键就是给他们传递相同的参数value:而这个任务就交给了函数Mea(value): 图片应该是自动切换的,当循环显示到最后一种图片后,返回到

  • AngularJS实用基础知识_入门必备篇(推荐)

    前言 今天来和大家学习一下AngularJS-- AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序. AngularJS 学习起来非常简单. 一.AngularJS指令与表达式 [AngularJS常用指令] 1.ng-app:声明Angular所管辖的区域,一般写在body或HTML上,原则上一个页面只有一个. 2.ng-model:把元素值(比如输入域的值)绑定到应用程序的变量中. eg:<input type="text&q

  • AngularJS实用开发技巧(推荐)

    一.开端 Angular JS 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它提供web应用的架构,无需进行手工DOM操作. AngularJS很小,只有60K,兼容主流浏览器,与jQuery 配合良好. 二.基础原则了解 ①angular的一些入门了解 一.基础知识 1.angular放弃了IE8 2.四大核心分别是mvc.模块化.指令系统.双向数据绑定 二.一些原则 1.不要复用controller,一个控制器一般只负责一小块视图. 2.不要在controller里面操作

  • .NET实用扩展方法详解

    持续更新的.NET实用扩展方法,具体内容如下 1. 字符串转换为可空数值类型(int, long, float...类似) /// <summary> /// 将字符串转换成32位整数,转换失败返回null /// </summary> /// <param name="str">转换的字符串</param> /// <returns>转换之后的整数,或null</returns> public static in

  • 非常实用的js验证框架实现源码 附原理方法

    本文为大家分享一个很实用的js验证框架实现源码,供大家参考,具体内容如下 关键方法和原理: function check(thisInput) 方法中的 if (!eval(scriptCode)) { return false; } 调用示例: 复制代码 代码如下: <input type="text" class="text_field percentCheck" name="progress_payment_two" id="

  • 常用正则表达式 比较实用

    匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复

  • 一个简洁实用的PHP缓存类完整实例

    本文完整描述了一个简洁实用的PHP缓存类,可用来检查缓存文件是否在设置更新时间之内.清除缓存文件.根据当前动态文件生成缓存文件名.连续创建目录.缓存文件输出静态等功能.对于采用PHP开发CMS系统来说,离不开对缓存的处理,合理利用好缓存可有效的提高程序执行效率. php缓存类文件完整代码如下: <?php /* * 缓存类 cache */ class cache { //缓存目录 var $cacheRoot = "./cache/"; //缓存更新时间秒数,0为不缓存 var

  • Python操作MySQL数据库9个实用实例

    在Windows平台上安装mysql模块用于Python开发 用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.3.win-amd64-py2.7.exe 实例 1.取得 MYSQL 的版本 # -*- coding: UTF-8 -*- #安装 MYSQL DB for python import MySQLdb as mdb con

  • Git 的基本操作、开发流程、实用技巧总结(陈彦贝)

    Git 是什么? Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码. Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史,这几乎是所有操作的本质,但是为了文章更加简单易懂,就不围绕这块展开了,有兴趣的可以去了解下. 开门见山,我们直接来说说 Git 有哪些常见的操作. Git 有哪些常规操作? 我们简单说说Git有哪些常规操作,能够让我们应付简单的开发需求. 克隆代码 ✦ 克隆远端代码 git clone http://git.code.oa.com/QCFE/sql

随机推荐