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编写技巧整理
Aug 23 Javascript
javascript模拟实现C# String.format函数功能代码
Nov 25 Javascript
js中window.open()的所有参数详细解析
Jan 09 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
Jul 06 Javascript
纯JavaScript代码实现移动设备绘图解锁
Oct 16 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
Dec 03 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
Mar 11 Javascript
js获取时间精确到秒(年月日)
Mar 16 Javascript
实例讲解JavaScript中的this指向错误解决方法
Jun 13 Javascript
图片加载完成再执行事件的实例
Nov 16 Javascript
es6函数之rest参数用法实例分析
Apr 18 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和MySql来与ODBC数据连接
2006/10/09 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
php实现登陆模块功能示例
2016/10/20 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
Python count函数使用方法实例解析
2020/03/23 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
师范生的个人求职信范文
2014/01/04 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
七个Python必备的GUI库
2021/04/27 Python
Vue实现下拉加载更多
2021/05/09 Vue.js
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL