1、获取元素 2、获取数据 3、绑定数据 4、隔行换色 5、表格排序
<table cellpadding="0" cellspacing="0" id="tab"> <thead> <tr> <th class="cursor">姓名</th> <th class="cursor">年龄</th> <th class="cursor">分数</th> <th>性别</th> </tr> </thead> <tbody> <!--<tr class="bg0"> <td>赵老大</td> <td>45</td> <td>89</td> <td>0</td> </tr> <tr class="bg1"> <td>赵老大</td> <td>45</td> <td>89</td> <td>0</td> </tr>--> </tbody> </table> <script type="text/javascript" src="js/utils.js"></script> <script type="text/javascript" src="js/biaoge.js"></script>
css 样式
*{
margin:0;
padding:0;
}
table{
width: 800px;
margin:50px auto;
box-shadow: 0 0 10px #333;
border-radius: 10px;
overflow: hidden;
font-size: 18px;
}
table thead tr{
text-align: center;
width: 100%;
height: 50px;
background:#ffb4b4;
}
table thead th{
width: 200px;
line-height: 50px;
color: white;
}
table tbody tr{
height: 40px;
line-height: 40px;
text-align: center;
}
table tbody tr.bg0{
background: lightgoldenrodyellow;
}
table tbody tr.bg1{
background: lightgray;
}
.cursor{
cursor: pointer;
}
JS
所用到的 util.js
var utils=(function(){
var flg='getComputedStyle' in window; // 惰性思想的运用;
function makeArray(arg){
if(flg){ // 标准浏览器
return Array.prototype.slice.call(arg);
}else{
var ary=[];
for(var i=0; i<arg.length; i++){
ary.push(arg[i]);
}
return ary;
}
}
function jsonParse(jsonStr){
return 'JSON' in window?JSON.parse(jsonStr):eval('('+jsonStr+')');
}
function rnd(n,m){
n=Number(n);
m=Number(m);
if(isNaN(n) || isNaN(m)){
return Math.random();//当返回0-1之间的随机小数,说明参数传错了;
}
if(n>m){
var tmp=m;
m=n;
n=tmp;
}
return Math.round(Math.random()*(m-n)+n);
}
function getByClass(strClass,parent){
parent=parent||document;
if(flg){
return this.makeArray(parent.getElementsByClassName(strClass));
}
//对IE浏览器兼容处理;
var aryClass=strClass.replace(/(^ +)|( +$)/g,'').split(/\s+/g);
var nodeList=parent.getElementsByTagName('*');
var ary=[];
for(var i=0; i<nodeList.length; i++){
var cur=nodeList[i];
var bOk=true;
for(var j=0; j<aryClass.length; j++){
var reg=new RegExp('(^| +)'+aryClass[j]+'( +|$)');
if(!reg.test(cur.className)){
bOk=false;
break;
}
}
if(bOk){
ary.push(cur);
}
}
return ary;
}
function hasClass(curEle,cName){
var reg=new RegExp('(^| +)'+cName+'( +|$)','g');
return reg.test(curEle.className);
}
function addClass(curEle,strClass){
var aryClass=strClass.replace(/(^ +)|( +$)/g,'').split(/\s+/g);
for(var i=0; i<aryClass.length; i++){
if(!this.hasClass(curEle,aryClass[i])){
curEle.className+=' '+aryClass[i];
}
}
}
function removeClass(curEle,strClass){
var aryClass=strClass.replace(/(^ +)|( +$)/g,'').split(/\s+/g);
for(var i=0; i<aryClass.length; i++){
var reg=new RegExp('(^| +)'+aryClass[i]+'( +|$)','g');
if(reg.test(curEle.className)){
curEle.className=curEle.className.replace(reg,' ').replace(/(^ +)|( +$)/g,'').replace(/\s+/g,' ');
}
}
}
function getCss(curEle,attr){
var val=null;
var reg=null;
if(flg){
val=getComputedStyle(curEle,false)[attr];
}else{
if(attr==='opacity'){
val=curEle.currentStyle['filter'];//‘alpha(opacity=10)';
reg=/^alpha\(opacity[=:](\d+(\.\d+)?)\)$/;
return reg.test(val)?RegExp.$1/100:1;
}
val=curEle.currentStyle[attr];
}
//如果带单位了,干掉单位;
reg=/^([+-])?(\d+(\.\d+)?)(px|pt|rem|em)?$/gi;
return reg.test(val)?parseFloat(val):val;
}
function setCss(curEle,attr,value){
//升级3:处理float
if(attr==='float'){
curEle.style.cssFloat=value;
curEle.style.styleFloat=value;
return;
}
//升级2:处理透明度
if(attr=='opacity'){
curEle.style.opacity=value;
curEle.style.filter='alpha(opacity='+(value*100)+')';
return;
}
var reg=/(width|height|top|right|bottom|left|((margin|padding)(top|right|bottom|left)?))/gi;
//升级1:处理单位;
if(reg.test(attr)){
if(value!=='auto' || value.toString().indexOf('%') == -1){
value=parseFloat(value)+'px';
}
}
curEle.style[attr]=value;
}
function setGroupCss(curEle,opt){
if(Object.prototype.toString.call(opt) !== '[object Object]') return;
for(var attr in opt){
this.setCss(curEle,attr,opt[attr]);
}
}
function css(curEle){
var argTwo=arguments[1];
if(typeof argTwo==='string'){
var argThree=arguments[2];
if(argThree===undefined){//第三个参数没有-获取
return this.getCss(curEle,argTwo);
}else{//当有第三个参数-设置一个样式
this.setCss(curEle,argTwo,argThree);
}
}
if({}.toString.call(argTwo)==='[object Object]'){
this.setGroupCss(curEle,argTwo);
}
}
function win(attr,value){
if(value===undefined){
return document.documentElement[attr]||document.body[attr];
}
document.documentElement[attr]=document.body[attr]=value;
}
function offset(curEle){
var l=curEle.offsetLeft;
var t=curEle.offsetTop;
var par=curEle.offsetParent;
while(par){
if(window.navigator.userAgent.indexOf('MSIE 8') == -1){
l+=par.clientLeft;
t+=par.clientTop;
}
l+=par.offsetLeft;
t+=par.offsetTop;
par=par.offsetParent;
}
return {left:l,top:t}
}
function getChildren(curEle,tagName){
var childs=curEle.childNodes;//获取所有的子节点
var ary=[];
for(var i=0; i<childs.length; i++){
var cur=childs[i];
if(cur.nodeType==1){//首先保证是子元素,再考虑是否过滤;
if(tagName){
if(cur.tagName.toLocaleLowerCase()===tagName.toLowerCase()){
ary.push(cur);
}
}else{
ary.push(cur)
}
}
}
return ary;
}
function prev(curEle){
if(flg){
return curEle.previousElementSibling;
}
var pre=curEle.previousSibling;
while(pre && pre.nodeType !== 1){
pre=pre.previousSibling;
}
return pre;
}
function next(curEle){
if(flg){
return curEle.nextElementSibling;
}
var nex=curEle.nextSibling;
while(nex && nex.nodeType !== 1){
nex=nex.nextSibling;
}
return nex;
}
function sibling(curEle){
var ary=[];
var pre=this.prev(curEle);
var nex=this.next(curEle);
if(pre) ary.push(pre);
if(nex) ary.push(nex);
return ary;
}
function prevAll(curEle){
var ary=[];
var pre=this.prev(curEle);
while(pre){
ary.push(pre);
pre=this.prev(pre);
}
return ary;
}
function nextAll(curEle){
var nex=this.next(curEle);
var ary=[];
while(nex){
ary.push(nex);
nex=this.next(nex);
}
return ary;
}
function siblings(curEle){
var ary1=this.prevAll(curEle);
var ary2=this.nextAll(curEle);
return ary1.concat(ary2);
}
function firstChild(curEle){
var children=this.getChildren(curEle);
return children[0];
}
function lastChild(curEle){
var children=this.getChildren(curEle);
return children[children.length-1];
}
function index(curEle){
return this.prevAll(curEle).length;
}
function appendChild(curEle,parent){
parent.appendChild(curEle);
}
function prependChild(curEle,parent){
var first=this.firstChild(parent);
if(first){
parent.insertBefore(curEle,first);
}else{
parent.appendChild(curEle);
}
}
function insertBefore(curEle,oldEle){
oldEle.parentNode.insertBefore(curEle,oldEle);
}
function insertAfter(curEle,oldEle){
var nex=this.next(oldEle);
if(nex){
oldEle.parentNode.insertBefore(curEle,nex);
}else{
oldEle.parentNode.appendChild(curEle);
}
}
return {
//makeArray:类数组转数组
makeArray:makeArray,
//jsonParse:把JSON格式的字符串转成JSON格式的数据(对象)
jsonParse:jsonParse,
//rnd:求一定范围的随机数,包含最大值;
rnd:rnd,
//getByClass:通过class名,可以限制范围的获取元素
getByClass:getByClass,
//hasClass:判断元素身上是否有某个class名
hasClass:hasClass,
//addClass:给元素批量添加出class名
addClass:addClass,
//removeClass:从元素身上批量删除class名
removeClass:removeClass,
//getCss:获取非行间样式
getCss:getCss,
//setCss:给元素设置一个样式
setCss:setCss,
//setGroupCss:给元素设置一组样式
setGroupCss:setGroupCss,
//css:集获取,设置一个,设置一组为一体;
css:css,
//win:浏览器盒子模型的兼容处理
win:win,
//offset:元素偏移量的兼容处理;
offset:offset,
//getChildren:获取当前元素下的所有子元素(可以通过标签名过滤子元素)
getChildren:getChildren,
//prev:获取当前元素的上一个哥哥元素
prev:prev,
//next:获取当前元素的下一个弟弟元素
next:next,
//sibling:获取当前元素的相邻元素;
sibling:sibling,
//prevAll:获取当前元素所有的哥哥元素
prevAll:prevAll,
//nextAll:获取当前元素所有的弟弟元素
nextAll:nextAll,
//siblings:获取当前元素所有的兄弟元素;
siblings:siblings,
//firstChild:获取当前容器下第一个子元素
firstChild:firstChild,
//lastChild:获取当前容器下最后一个子元素
lastChild:lastChild,
//index:当前元素的索引(当前元素排行第几);
index:index,
//appendChild:把新元素插入到父容器的末尾;
appendChild:appendChild,
//prependChild:把新元素插入到父容器的开头;
prependChild:prependChild,
//insertBefore:把新元素插入到指定元素的前面
insertBefore:insertBefore,
//insertAfter:把新元素插入到指定元素的后面;
insertAfter:insertAfter
}
})();
所用到的 biaoge.js
(function () {
var oTab = document.getElementById('tab');
var tHead = oTab.tHead;
var tCells = tHead.rows[0].cells;
var tBody = oTab.tBodies[0];
var aRows = tBody.rows;
var data = null;
getData();
function getData() {
var xml = new XMLHttpRequest;
xml.open('get', 'data.txt', false);
xml.onreadystatechange = function () {
if (xml.readyState === 4 && /^2\d{2}$/.test(xml.status)) {
data = utils.jsonParse(xml.responseText);
}
};
xml.send();
}
bind();
function bind() {
var str = '';
for (var i = 0; i < data.length; i++) {
var curData = data[i];
curData.sex = curData.sex == 0 ? '男' : '女';
str += '<tr>\
<td>' + curData.name + '</td>\
<td>' + curData.age + '</td>\
<td>' + curData.score + '</td>\
<td>' + curData.sex + '</td>\
</tr>';
}
tBody.innerHTML = str;
}
changeColor();
function changeColor() {
for (var i = 0; i < aRows.length; i++) {
aRows[i].className = 'bg' + i % 2;
}
}
function sort(n) {
for (var i = 0; i < tCells.length; i++) {
tCells[i].flag = i == n ? tCells[i].flag * -1 : -1;
}
var ary = utils.makeArray(aRows);
ary.sort(function (a, b) {
a = a.cells[n].innerHTML;
b = b.cells[n].innerHTML;
if (isNaN(a) && isNaN(b)) {
return a.localeCompare(b) * tCells[n].flag;
}
return (a - b) * tCells[n].flag;
});
var frg = document.createDocumentFragment();
for (var i = 0; i < ary.length; i++) {
frg.appendChild(ary[i]);
}
tBody.appendChild(frg);
frg = null;
changeColor();
}
for (var i = 0; i < tCells.length; i++) {
if (tCells[i].className == 'cursor') {
tCells[i].flag = -1;
tCells[i].index = i;
tCells[i].onclick = function () {
sort(this.index);
}
}
}
})();
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# js实现表格排序
# js实现表格隔行变色
# js实现表格隔行换色
# 利用JS动态生成隔行换色HTML表格的两种方法
# JS+CSS实现Li列表隔行换色效果的方法
# JS实现简洁(隔行换色、高亮显示)表格特效
# Js 实现表格隔行换色一例
# 不用javascript实现带序号的表格隔行换色的效果
# 基于JavaScript实现表格隔行换色
# 把新
# 第三个
# 行间
# 随机数
# 错了
# 可以通过
# 绑定
# 转成
# 转数
# 偏移量
# 为一体
# ary
# call
# slice
# jsonParse
# push
# length
# prototype
# JS
# pointer
相关文章:
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
电脑免费海报制作网站推荐,招聘海报哪个网站多?
建站之星如何快速更换网站模板?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
,巨量百应是干嘛的?
南平网站制作公司,2025年南平市事业单位报名时间?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
广州商城建站系统开发成本与周期如何控制?
如何快速辨别茅台真假?关键步骤解析
javascript基本数据类型及类型检测常用方法小结
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
开封网站制作公司,网络用语开封是什么意思?
建站VPS能否同时实现高效与安全翻墙?
建站之星收费标准详解:套餐费用及年费价格表一览
如何在云服务器上快速搭建个人网站?
如何挑选优质建站一级代理提升网站排名?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
建站之星会员如何解锁更多建站功能?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何在Windows服务器上快速搭建网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
黑客如何利用漏洞与弱口令入侵网站服务器?
怀化网站制作公司,怀化新生儿上户网上办理流程?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
临沂网站制作企业,临沂第三中学官方网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
宝塔建站助手安装配置与建站模板使用全流程解析
建站之星价格显示格式升级,你的预算足够吗?
宝塔Windows建站如何避免显示默认IIS页面?
建站之星代理平台如何选择最佳方案?
太原网站制作公司有哪些,网约车营运证查询官网?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
C++如何编写函数模板?(泛型编程入门)
建站之星如何修改网站生成路径?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
营销式网站制作方案,销售哪个网站招聘效果最好?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
建站之星如何快速生成多端适配网站?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
韩国服务器如何优化跨境访问实现高效连接?
h5网站制作工具有哪些,h5页面制作工具有哪些?
实例解析angularjs的filter过滤器
如何通过cPanel快速搭建网站?
如何选择服务器才能高效搭建专属网站?
大型企业网站制作流程,做网站需要注册公司吗?
已有域名能否直接搭建网站?
制作销售网站教学视频,销售网站有哪些?
建站之星Pro快速搭建教程:模板选择与功能配置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。