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,ASP.NET)
Jan 07 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
JS仿Windows开机启动Loading进度条的方法
Feb 26 Javascript
JS遍历数组及打印数组实例分析
Jan 21 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
Feb 18 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
Vuex模块化实现待办事项的状态管理
Mar 15 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
五步轻松实现zTree的使用
Nov 01 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 Javascript
解决layui的input独占一行的问题
Sep 10 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 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 批量更新网页内容实现代码
2010/01/05 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
python中xrange和range的区别
2014/05/13 Python
改进Django中的表单的简单方法
2015/07/17 Python
python 网络编程详解及简单实例
2017/04/25 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
药学专业个人的自我评价
2013/12/31 职场文书
小学五年级学生评语
2014/04/22 职场文书
实习单位评语
2014/04/26 职场文书
大学生应聘求职信
2014/05/26 职场文书
大跃进口号
2014/06/16 职场文书
2015员工年度考核评语
2015/03/25 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers