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 相关文章推荐
javascript学习随笔(使用window和frame)的技巧
Mar 08 Javascript
最近项目写了一些js,水平有待提高
Jan 31 Javascript
javascript中的107个基础知识收集整理 推荐
Mar 29 Javascript
jquery 弹出层注册页面等(asp.net后台)
Jun 17 Javascript
js Form.elements[i]的使用实例
Nov 13 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
Dec 08 Javascript
jQuery实现ichat在线客服插件
Dec 29 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
vue.js配合$.post从后台获取数据简单demo分享
Aug 11 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 Javascript
jQuery实现动态向上滚动
Dec 21 jQuery
浅谈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/10/23 PHP
php实现微信模板消息推送
2018/03/30 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
express的中间件cookieParser详解
2014/12/04 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
Django入门使用示例
2017/12/12 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
浅述python2与python3的简单区别
2018/09/19 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
个人担保书格式范文
2014/05/12 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
建筑工地质量标语
2014/06/12 职场文书
2014年科技工作总结
2014/11/26 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
Javascript 解构赋值详情
2021/11/17 Javascript