JS实现的样式切换功能tableCSS实例


Posted in Javascript onDecember 30, 2016

本文实例分析了JS实现的样式切换功能tableCSS。分享给大家供大家参考,具体如下:

把前阵子写的JQ插件函数(alterBgColor )改写成不基于JQ的代码,还添加了一个click样式效果

代码风格还是按照JQ插件风格来写,使用了闭包来循环设置TR元素的样式

function TableCss(options){
  //如果没参数,就退出
  if(arguments.length < 1 || !document.getElementById(options.tableName) ) { return ;}
  //参数及默认参数
  var options = {
    tableName : options.tableName,
    evenClass : options.evenClass || "tr_even",
    oddClass : options.oddClass || "tr_odd",
    clickClass : options.clickClass || "tr_click",
    hoverClass: options.hoverClass || "tr_hover"
    }
  //根据ID找到表格元素
  var tableName = document.getElementById(options.tableName);
  var tr = tableName.getElementsByTagName("tr");
  //对TR元素循环设置
  for(var i=0, len=tr.length; i<len; i++){
    //用了闭包
    (function(k){
      //设置奇偶行样式
      tr[k].className = (k%2==0)? options.oddClass : options.evenClass;
      //点击样式
      tr[k].onclick = function(){
        if (tr[k].className == options.clickClass){
          tr[k].className = (k%2==0)? options.oddClass : options.evenClass;
        }
        else {
          tr[k].className = options.clickClass;
        }
      }
      //鼠标HOVER样式,如果已经是点击样式,则不变化
      tr[k].onmouseover = function(){
        if(tr[k].className == options.clickClass ){ return false;}
        else { tr[k].className = options.hoverClass;}
      }
      tr[k].onmouseout = function(){
        if(tr[k].className == options.clickClass){ return false;}
        else {
         tr[k].className = (k%2==0)? options.oddClass : options.evenClass;
        }
      }
     })(i)
  }
}
//调用
TableCss({tableName:"tb1"});

效果很简单,代码也很简单.

只是这句tr[k].className = (k%2==0)? options.oddClass : options.evenClass;写了三遍,本来是写在一个function里的,但不知道在闭包里那么写会不会影响性能(任务管理器里也没看到有CPU使用率暴涨的情况),最后还是决定这么写,呵呵.

测试代码:

<style>
<!--
#tb1,
#tb1 td{ border:1px solid #000;border-collapse:collapse}
.tr_even { background:#CCC;}
.tr_odd { background:#9FF;}
.tr_hover { background:#FF6;}
.tr_click { background:#00F;}
-->
</style>
<table id="tb1" cellpadding="1" cellspacing="1">
  <tr>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
  </tr>
  <tr>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
  </tr>
  <tr>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
  </tr>
  <tr>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
    <td>123</td>
    <td>456</td>
  </tr>
</table>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jquery获取div宽度的实现思路与代码
Jan 13 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
jQuery grep()方法详解及实例代码
Oct 30 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
基于javascript的Form表单验证
Dec 29 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
express 项目分层实践详解
Dec 10 Javascript
js实现json数组分组合并操作示例
Feb 12 Javascript
深入理解javascript中的this
Feb 08 Javascript
浅谈js script标签中的预解析
Dec 30 #Javascript
jQuery实现页面顶部下拉广告
Dec 30 #Javascript
jQuery Password Validation密码验证
Dec 30 #Javascript
JS编写函数实现对身份证号码最后一位的验证功能
Dec 29 #Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 #Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
Dec 29 #Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 #Javascript
You might like
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
js定时器的使用(实例讲解)
2014/01/06 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
小程序tab页无法传递参数的方法
2018/08/03 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
jQuery实现增删改查
2020/12/22 jQuery
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
Python对象体系深入分析
2014/10/28 Python
解决python删除文件的权限错误问题
2018/04/24 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python协程之动态添加任务的方法
2019/02/19 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Keras设置以及获取权重的实现
2020/06/19 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
EJB与JAVA BEAN的区别
2016/08/29 面试题
Python里面如何拷贝一个对象
2014/02/17 面试题
志愿者服务感言
2014/02/27 职场文书
租赁协议书范本
2014/04/22 职场文书
篮球赛口号
2014/06/18 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
幼儿园元旦主持词
2015/07/06 职场文书