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优化技巧(文件瘦身篇)
Jan 28 Javascript
javascript不同页面传值的改进版
Sep 30 Javascript
javascript(jquery)利用函数修改全局变量的代码
Nov 02 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
May 01 Javascript
Angular.JS中的this指向详解
May 17 Javascript
Vue波纹按钮组件制作
Apr 30 Javascript
vue做移动端适配最佳解决方案(亲测有效)
Sep 04 Javascript
详解JS函数防抖
Jun 05 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/05/26 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
vue2组件之select2调用的示例代码
2017/10/12 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python读写json文件的简单实现
2017/04/11 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
python之super的使用小结
2018/08/13 Python
Django实现跨域的2种方法
2019/07/31 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
使用Python webdriver图书馆抢座自动预约的正确方法
2021/03/04 Python
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
高二历史教学反思
2014/01/25 职场文书
公务员转正考察材料
2014/02/07 职场文书
体育活动总结范文
2014/05/04 职场文书
贫困证明书范文
2015/06/16 职场文书
python flask开发的简单基金查询工具
2021/06/02 Python
Python获取字典中某个key的value
2022/04/13 Python