用了优快云 ID叫火龙果的网友的js
保存为 tableboder.js
然后新建一个html
下面是个非常需要注意的小问题
引入外部js时,<scriptlanguage="javascript"src="tableBoder.js"></script>必须写language 属性,而不能使type属性。
- /**
- *仿Prototype的$方法
- */
- window.$=function(id){
- if(typeofid=='string'){
- returndocument.getElementById(id);
- }
- returnid;
- }
- /**
- *色彩渐变
- *@paramstart起始颜色,使用#颜色表
- *@paramend终止颜色
- *@paramstep渐变步长,大于1并且小于200,默认为16
- */
- varColorGradient=function(start,end,step){
- this.start=this._toRGB(start);
- this.end=this._toRGB(end);
- this.step=(function(){
- if(!step||step<1||step>200){
- return16;
- }
- returnstep;
- })();
- this.gradient=[];
- }
- ColorGradient.prototype={
- //获得渐变的颜色数组,以6位十六进制字符串返回
- getGradient:function(){
- returnthis._getGradient();
- },
- //获得所设定的步长值
- getStep:function(){
- returnthis.step;
- },
- //测试工作,用于在页面上渐变测试
- test:function(){
- vargrad=this._getGradient();
- varn=400/this.step;
- varp=document.createElement('div');
- for(vari=0;i<grad.length;i++){
- vard=document.createElement('div');
- d.className='grad';
- d.style.width=n+'px';
- d.style.backgroundColor='#'+grad[i];
- p.appendChild(d);
- }
- document.body.appendChild(p);
- },
- //生成渐变色数组
- _getGradient:function(){
- if(this.gradient.length>0){
- //如果渐变色变量中有值直接返回
- returnthis.gradienth;
- }
- //生成各步的颜色
- for(vari=0;i<=this.step;i++){
- varcolor=this._getNewColor(i).toString(16);
- while(color.length<6){
- color='0'+color;
- }
- this.gradient.push(color);
- }
- returnthis.gradient;
- },
- //根据RGB变化量获得每步的RGB颜色
- _getNewColor:function(k){
- varrgbStep=this._getStepRgb();
- varrgb=0;
- for(vari=0;i<3;i++){
- varc=Math.floor(this.start[i]+rgbStep[i]*k);
- rgb|=c<<((3-i-1)*8);
- }
- returnrgb;
- },
- //获得RGB三种颜色的变化量
- _getStepRgb:function(){
- varrgb=[];
- //依次获得R、G、B的变化步长
- for(vari=0;i<3;i++){
- rgb.push(this._getStepVar(i));
- }
- returnrgb;
- },
- //根据渐变步长、起始、终止颜色获得步长的变化量
- _getStepVar:function(index){
- return(this.end[index]-this.start[index])/this.step;
- },
- //将#颜色转换成RGB颜色数组
- //索引0--红色R
- //索引1--绿色G
- //索引2--蓝色B
- _toRGB:function(color){
- varv=color.substring(1);
- varc=parseInt(v,16);
- varrgb=[];
- for(vari=0;i<3;i++){
- rgb.push(c>>((3-i-1)*8)&0xff);
- }
- returnrgb;
- }
- }
- /**
- *事件处理工具类
- */
- varEvent=function(){}
- Event={
- /**
- *为element使用handler处理程序添加至event事件
- *兼容IE及Firefox等浏览器
- *
- *例如为botton对象添加onclick事件,使用clickEvent
- *方法作为处理程序:
- *Event.addEvent(botton,'click',clickEvent);
- *
- *@paramelement需要添加事件的对象(Object)
- *@paramevent需要添加的事件名称(String),不加“on”
- *@paramhandler需要添加的方法引用(Function)
- */
- addEvent:function(element,event,handler){
- if(element.attachEvent){
- element.attachEvent('on'+event,handler);
- }elseif(element.addEventListener){
- element.addEventListener(event,handler,false);
- }else{
- element['on'+event]=handler;
- }
- },
- /**
- *添加事件处理程序时,只能添加一个方法的引用,并不能给
- *方法加上参数。比如定义了clickEvent(str)这个方法,现
- *在要将其作为obj的onclick的事件处理程序,就可以用:
- *obj.onclick=Event.getFuntion(null,clickEvent,str);
- */
- getFunction:function(obj,fun){
- varargs=[];
- obj=obj||window;
- for(vari=2;i<arguments.length;i++){
- args.push(arguments[i]);
- }
- returnfunction(){
- fun.apply(obj,args);
- };
- }
- }
- varTable=function(id,time,start,end){
- this.rows=(function(){
- vartab=$(id);
- if(tab.tBodies.length==0){
- returntab.rows;
- }
- varrows=[];
- for(vari=0;i<tab.tBodies.length;i++){
- for(varj=0;j<tab.tBodies[i].rows.length;j++){
- rows.push(tab.tBodies[i].rows[j]);
- }
- }
- returnrows;
- })();
- this.start=start||Table.DEFAULT_START;
- this.end=end||Table.DEFAULT_END;
- this.time=time||Table.DEFAULT_TIME;
- varcolor=newColorGradient(this.start,this.end,16);
- this.grad=color.getGradient();
- this.step=color.getStep();
- }
- Table.DEFAULT_TIME=10;
- Table.DEFAULT_START='#dcdcdc';
- Table.DEFAULT_END='#ffffff';
- Table.prototype={
- addEvent:function(){
- for(vari=0;i<this.rows.length;i++){
- this.rows[i].style.backgroundColor=this.end;
- Event.addEvent(this.rows[i],'mouseover',
- Event.getFunction(this,this.overEvent,this.rows[i]));
- Event.addEvent(this.rows[i],'mouseout',
- Event.getFunction(this,this.outEvent,this.rows[i]));
- }
- },
- overEvent:function(row){
- row.style.backgroundColor=this.start;
- row.change=this.step;
- },
- outEvent:function(row){
- varme=this;
- if(row.change-->0){
- row.style.backgroundColor='#'+me.grad[me.step-row.change];
- setTimeout(function(){
- me.outEvent(row);
- },this.time);
- }
- },
- _getRows:function(id){
- vartab=$(id);
- alert(tab.tBodies.length);
- }
- }
然后新建一个html
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html>
- <head>
- <metahttp-equiv="Content-Type"content="text/html;charset=gbk"/>
- <title>Table</title>
- <scriptlanguage="javascript"src="tableboder.js"></script>
- <scripttype="text/javascript">
- /**
- *
- *调用方法就是下面,用表格id把tablenew出来,加上事件。
- */
- window.onload=function(){
- vartab1=newTable('tab1');
- tab1.addEvent();
- }
- </script>
- </head>
- <styletype="text/css">
- div.grad{
- float:left;
- height:100px;
- margin:0;
- padding:0;
- }
- table{
- border-top:1pxsolidblack;
- border-left:1pxsolidblack;
- border-spacing:0;
- font-family:宋体,新宋体;
- }
- tabletd{
- border-bottom:1pxsolidblack;
- border-right:1pxsolidblack;
- padding:2px5px;
- }
- </style>
- <body>
- <tableid='tab1'width="60%"align="center">
- <tr>
- <td>1</td>
- <td>2</td>
- <td>3</td>
- <td>4</td>
- </tr>
- <tr>
- <td>5</td>
- <td>6</td>
- <td>7</td>
- <td>8</td>
- </tr>
- <tr>
- <td>1</td>
- <td>2</td>
- <td>3</td>
- <td>4</td>
- </tr>
- <tr>
- <td>5</td>
- <td>6</td>
- <td>7</td>
- <td>8</td>
- </tr>
- <tr>
- <td>1</td>
- <td>2</td>
- <td>3</td>
- <td>4</td>
- </tr>
- <tr>
- <td>5</td>
- <td>6</td>
- <td>7</td>
- <td>8</td>
- </tr>
- </table>
- </body>
- </html>
引入外部js时,<scriptlanguage="javascript"src="tableBoder.js"></script>必须写language 属性,而不能使type属性。
56

被折叠的 条评论
为什么被折叠?



