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 相关文章推荐
js常用函数 不错
Sep 08 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
RequireJS入门一之实现第一个例子
Sep 30 Javascript
Bootstrap的Refresh Icon也spin起来
Jul 13 Javascript
js实现时间轴自动排列效果
Mar 09 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
vue页面使用阿里oss上传功能的实例(一)
Aug 09 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 Javascript
解决vue初始化项目一直停在downloading template的问题
Nov 09 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
鱼油专家:Omegavia
2016/10/10 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
车间班长岗位职责
2013/11/30 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
学生病假条怎么写
2015/08/17 职场文书
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android