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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
JS及PHP代码编写八大排序算法
Jul 12 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
Jan 19 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
浅谈Vue的加载顺序探讨
Oct 25 Javascript
浅谈在Vue-cli里基于axios封装复用请求
Nov 06 Javascript
Mint UI 基于 Vue.js 移动端组件库
Nov 07 Javascript
AngularJS日期格式化常见操作实例分析
May 17 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 Javascript
使用JS来动态操作css的几种方法
Dec 18 Javascript
关于angular引入ng-zorro的问题浅析
Sep 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
关于PHP5 Session生命周期介绍
2010/03/02 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
使javascript也能包含文件
2006/10/26 Javascript
非常不错的一个javascript 类
2006/11/07 Javascript
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
JS常见算法详解
2017/02/28 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Django中间件实现拦截器的方法
2018/06/01 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
Python3 元组tuple入门基础
2020/02/09 Python
jupyter notebook 重装教程
2020/04/16 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
学生安全责任书模板
2014/07/25 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
关于环保的宣传稿
2015/07/23 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
python前后端自定义分页器
2022/04/13 Python