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 相关文章推荐
新页面打开实际尺寸的图片
Aug 25 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
Aug 04 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
Nov 24 Javascript
javascript上传图片前预览图片兼容大多数浏览器
Oct 25 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
基于JavaScript实现瀑布流效果
Mar 29 Javascript
Require.JS中的几种define定义方式示例
Jun 01 Javascript
简化版的vue-router实现思路详解
Oct 19 Javascript
layui实现显示数据表格、搜索和修改功能示例
Jun 03 Javascript
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
浅谈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对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
python selenium firefox使用详解
2019/02/26 Python
python适合人工智能的理由和优势
2019/06/28 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
Python实现自动签到脚本功能
2020/08/20 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
大学生求职自荐信
2013/12/12 职场文书
白酒市场开发计划书
2014/01/09 职场文书
七年级政治教学反思
2014/02/03 职场文书
小学班主任评语大全
2014/04/23 职场文书
火灾现场处置方案
2014/05/28 职场文书
600字作文之感受大自然
2019/11/27 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL