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 相关文章推荐
基于datagrid框架的查询
Apr 08 Javascript
json的定义、标准格式及json字符串检验
May 11 Javascript
jQuery回调函数的定义及用法实例
Dec 23 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
javascript合并两个数组最简单的实现方法
Sep 14 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
Dec 16 Javascript
js实现烟花特效
Mar 02 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
phpfpm的作用和用法
2019/10/10 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
python处理xml文件的方法小结
2017/05/02 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
酒店应聘自荐信
2013/11/09 职场文书
前台接待岗位职责
2013/12/03 职场文书
学习委员自我鉴定
2014/01/13 职场文书
统计专业自荐书
2014/07/06 职场文书
体育教师研修感悟
2015/11/18 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python