国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

JS實(shí)現(xiàn)隔行換色的表格排序

2019-11-19 17:01:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1、獲取元素    2、獲取數(shù)據(jù)   3、綁定數(shù)據(jù)   4、隔行換色   5、表格排序

<table cellpadding="0" cellspacing="0" id="tab"> <thead> <tr>  <th class="cursor">姓名</th>  <th class="cursor">年齡</th>  <th class="cursor">分?jǐn)?shù)</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; // 惰性思想的運(yùn)用; function makeArray(arg){  if(flg){ // 標(biāo)準(zhǔn)瀏覽器   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();//當(dāng)返回0-1之間的隨機(jī)小數(shù),說(shuō)明參數(shù)傳錯(cuò)了;  }  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));  }  //對(duì)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'];//‘a(chǎn)lpha(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){  //升級(jí)3:處理float  if(attr==='float'){   curEle.style.cssFloat=value;   curEle.style.styleFloat=value;   return;  }  //升級(jí)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;  //升級(jí)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){//第三個(gè)參數(shù)沒(méi)有-獲取    return this.getCss(curEle,argTwo);   }else{//當(dāng)有第三個(gè)參數(shù)-設(shè)置一個(gè)樣式    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;//獲取所有的子節(jié)點(diǎn)  var ary=[];  for(var i=0; i<childs.length; i++){   var cur=childs[i];   if(cur.nodeType==1){//首先保證是子元素,再考慮是否過(guò)濾;    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:類(lèi)數(shù)組轉(zhuǎn)數(shù)組  makeArray:makeArray,  //jsonParse:把JSON格式的字符串轉(zhuǎn)成JSON格式的數(shù)據(jù)(對(duì)象)  jsonParse:jsonParse,  //rnd:求一定范圍的隨機(jī)數(shù),包含最大值;  rnd:rnd,  //getByClass:通過(guò)class名,可以限制范圍的獲取元素  getByClass:getByClass,  //hasClass:判斷元素身上是否有某個(gè)class名  hasClass:hasClass,  //addClass:給元素批量添加出class名  addClass:addClass,  //removeClass:從元素身上批量刪除class名  removeClass:removeClass,  //getCss:獲取非行間樣式  getCss:getCss,  //setCss:給元素設(shè)置一個(gè)樣式  setCss:setCss,  //setGroupCss:給元素設(shè)置一組樣式  setGroupCss:setGroupCss,  //css:集獲取,設(shè)置一個(gè),設(shè)置一組為一體;  css:css,  //win:瀏覽器盒子模型的兼容處理  win:win,  //offset:元素偏移量的兼容處理;  offset:offset,  //getChildren:獲取當(dāng)前元素下的所有子元素(可以通過(guò)標(biāo)簽名過(guò)濾子元素)  getChildren:getChildren,  //prev:獲取當(dāng)前元素的上一個(gè)哥哥元素  prev:prev,  //next:獲取當(dāng)前元素的下一個(gè)弟弟元素  next:next,  //sibling:獲取當(dāng)前元素的相鄰元素;  sibling:sibling,  //prevAll:獲取當(dāng)前元素所有的哥哥元素  prevAll:prevAll,  //nextAll:獲取當(dāng)前元素所有的弟弟元素  nextAll:nextAll,  //siblings:獲取當(dāng)前元素所有的兄弟元素;  siblings:siblings,  //firstChild:獲取當(dāng)前容器下第一個(gè)子元素  firstChild:firstChild,  //lastChild:獲取當(dāng)前容器下最后一個(gè)子元素  lastChild:lastChild,  //index:當(dāng)前元素的索引(當(dāng)前元素排行第幾);  index:index,  //appendChild:把新元素插入到父容器的末尾;  appendChild:appendChild,  //prependChild:把新元素插入到父容器的開(kāi)頭;  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);   }  } }})();

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持武林網(wǎng)!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 太仆寺旗| 维西| 宾川县| 泗水县| 元阳县| 承德县| 安多县| 绥滨县| 晋江市| 宁安市| 黎平县| 天柱县| 策勒县| 普洱| 阳高县| 霍州市| 芮城县| 晋州市| 双流县| 铜梁县| 阳江市| 北宁市| 汉中市| 定陶县| 门源| 隆子县| 海城市| 镇安县| 潼关县| 元谋县| 江山市| 苍溪县| 贡觉县| 沂南县| 三明市| 永宁县| 青田县| 荥阳市| 平江县| 二手房| 榆树市|