亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS實現的表格操作類詳解(添加,刪除,排序,上移,下移)

2019-11-20 10:57:53
字體:
來源:轉載
供稿:網友

本文實例講述了JS實現的表格操作類。分享給大家供大家參考,具體如下:

運行效果截圖如下:

點擊此處查看在線演示。

具體代碼如下:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css">*{font-size:14px}button{margin:3px}</style> <script type="text/javascript"> var mytable=null,mytable2=null; window.onload=function(){ mytable=new CTable("tbl",10); mytable2=new CTable("tbl2",6); } Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)} function $A(arrayLike){ for(var i=0,ret=[];i<arrayLike.length;i++) ret.push(arrayLike[i]); return ret } Function.prototype.bind = function() {  var __method = this, args = $A(arguments), object = args.shift();  return function() {   return __method.apply(object, args.concat($A(arguments)));  } } function CTable(id,rows){ this.tbl=typeof(id)=="string"?document.getElementById(id):id; if (rows && /^/d+$/.test(rows)) this.addrows(rows) } CTable.prototype={ addrows:function(n){ //隨機添加n個tr new Array(n).each(this.add.bind(this)) }, add:function(){ //添加1個tr var self=this; var tr = self.tbl.insertRow(-1),td1= tr.insertCell(-1),td2= tr.insertCell(-1),td3= tr.insertCell(-1); var chkbox=document.createElement("INPUT") chkbox.type="checkbox" chkbox.onclick=self.highlight.bind(self) td1.appendChild(chkbox) td1.setAttribute("width","35") td2.innerHTML=Math.ceil(Math.random()*99) td3.innerHTML=Math.ceil(Math.random()*99) }, del:function(){ //刪除所選tr var self=this $A(self.tbl.rows).each(function(tr){if (self.getChkBox(tr).checked) tr.parentNode.removeChild(tr)}) }, up:function(){ //上移所選tr var self=this var upOne=function(tr){ //上移1個tr if (tr.rowIndex>0){ self.swapTr(tr,self.tbl.rows[tr.rowIndex-1]) self.getChkBox(tr).checked=true } } var arr=$A(self.tbl.rows).reverse() if (arr.length>0 && self.getChkBox(arr[arr.length-1]).checked){ for(var i=arr.length-1;i>=0;i--){ if (self.getChkBox(arr[i]).checked){ arr.pop()      }else{ break } } } arr.reverse().each(function(tr){if (self.getChkBox(tr).checked) upOne(tr)}); }, down:function(){ var self=this var downOne=function(tr){    if (tr.rowIndex<self.tbl.rows.length-1) { self.swapTr(tr,self.tbl.rows[tr.rowIndex+1]); self.getChkBox(tr).checked=true; } } var arr=$A(self.tbl.rows) if (arr.length>0 && self.getChkBox(arr[arr.length-1]).checked){ for(var i=arr.length-1;i>=0;i--){ if (self.getChkBox(arr[i]).checked){ arr.pop() }else{ break } } } arr.reverse().each(function(tr){if (self.getChkBox(tr).checked) downOne(tr)}); }, sort:function(){ //排序  var self=this,order=arguments[0]; var sortBy=function(a,b){ if (typeof(order)=="number"){ //數字,則按數字指示的列排序 return Number(a.cells[order].innerHTML)>=Number(b.cells[order].innerHTML)?1:-1;  //轉化為數字類型比較大小 }else if (typeof(order)=="function"){ //為程序,按 程序的返回結果排序 return order(a,b); }else{ return 1; } } $A(self.tbl.rows).sort(sortBy).each(function(x){ var checkStatus=self.getChkBox(x).checked; self.tbl.firstChild.appendChild(x); if (checkStatus) self.getChkBox(x).checked=checkStatus; }); }, rnd:function(){ //隨即選擇幾行tr var self=this,selmax=0,tbl=self.tbl; if (tbl.rows.length){  selmax=Math.max(Math.ceil(tbl.rows.length/4),1); //選擇的行數不超過tr數的1/4  $A(tbl.rows).each(function(x){ self.getChkBox(x).checked=false; self.restoreBgColor(x) }) }else{ return alert("無數據可以選") } new Array(selmax).each(function(){ var tr=tbl.rows[Math.floor(Math.random()*tbl.rows.length)] self.getChkBox(tr).checked=true; self.highlight({target:self.getChkBox(tr)}) }) }, highlight:function(){        //設置tr的背景色 var self=this; var evt=arguments[0] || window.event var chkbox=evt.srcElement || evt.target var tr=chkbox.parentNode.parentNode chkbox.checked?self.setBgColor(tr):self.restoreBgColor(tr) }, swapTr:function(tr1,tr2){       //交換tr1和tr2的位置 var target=(tr1.rowIndex<tr2.rowIndex)?tr2.nextSibling:tr2; var tBody=tr1.parentNode tBody.replaceChild(tr2,tr1);   tBody.insertBefore(tr1,target); }, getChkBox:function(tr){      //從tr得到 checkbox對象 return tr.cells[0].firstChild }, restoreBgColor:function(tr){      tr.style.backgroundColor="#ffffff" }, setBgColor:function(tr){ tr.style.backgroundColor="#c0c0c0" } } function f(a,b){ var sumRow=function(row){return Number(row.cells[1].innerHTML)+Number(row.cells[2].innerHTML)}; return sumRow(a)>sumRow(b)?1:-1; } </script> </head> <body> <button onClick="javascript:mytable.rnd()">隨機選擇行</button> <button onClick="javascript:mytable.add()">添加一行</button> <button onClick="javascript:mytable.del()">刪除選定行</button> <button onClick="javascript:mytable.up()">上移選定行</button> <button onClick="javascript:mytable.down()">下移選定行</button> <button onClick="javascript:mytable.sort(1)">按第一列數字排序</button> <button onClick="javascript:mytable.sort(f)">按每行數據的和排序</button> <table width=100%> <tr> <td valign="top"><table border id="tbl" width="80%"></table></td> <td valign="top"><table border id="tbl2" width="80%"></table></td> </tr> </table> <button onClick="javascript:mytable2.rnd()">隨機選擇行</button> <button onClick="javascript:mytable2.add()">添加一行</button> <button onClick="javascript:mytable2.del()">刪除選定行</button> <button onClick="javascript:mytable2.up()">上移選定行</button> <button onClick="javascript:mytable2.down()">下移選定行</button> <button onClick="javascript:mytable2.sort(2)">按第二列數字排序</button> <button onClick="javascript:mytable2.sort(f)">按每行數據的和排序</button> </body> </html>

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩网| 国产精品久久久久久久久久尿| 中文字幕久久精品| 国产在线精品一区免费香蕉| 日韩欧美999| 欧美激情第99页| 国产精品揄拍500视频| 96国产粉嫩美女| 九九热精品视频| 国产日韩中文字幕| 欧美黑人极品猛少妇色xxxxx| 亚洲美女又黄又爽在线观看| 国产亚洲综合久久| 亚洲电影中文字幕| 亚洲美女在线看| 伊人伊成久久人综合网小说| 97超级碰在线看视频免费在线看| 国产极品精品在线观看| 黑人精品xxx一区一二区| 这里只有视频精品| 国产精品v日韩精品| 午夜精品蜜臀一区二区三区免费| 日韩免费电影在线观看| 国产欧美va欧美va香蕉在| 久久男人资源视频| 2019亚洲男人天堂| 精品日韩中文字幕| 欧美性猛交xxxx免费看漫画| 亚洲综合色av| 欧美日在线观看| 日韩国产在线播放| 国产精品视频中文字幕91| 国内精品视频在线| 欧美xxxx做受欧美| 久久精品国产久精国产思思| 国产va免费精品高清在线观看| 麻豆国产va免费精品高清在线| 成人h视频在线观看播放| 国产亚洲精品一区二555| 日韩免费av片在线观看| 日本一区二区三区四区视频| 日韩中文字幕网站| 日韩成人在线视频| 精品免费在线观看| 国产日韩欧美另类| 91av在线不卡| 亚洲国产精品人久久电影| 成人女保姆的销魂服务| 成人网页在线免费观看| 欧美一区二区三区艳史| 日韩av最新在线| 欧美性资源免费| 在线视频免费一区二区| 欧美肥臀大乳一区二区免费视频| 亚洲国产精品系列| 久久五月天色综合| 久热精品在线视频| 欧美成人免费小视频| 国产成人拍精品视频午夜网站| 亚洲第一色在线| 美日韩精品免费观看视频| 国产精品久久久av| 亚洲欧美日韩成人| 国产成人精品亚洲精品| 亚洲美女黄色片| 国产美女久久久| 91视频九色网站| 日韩成人av在线| 国产精品久久久久久av福利| 91在线高清免费观看| 国产精品9999| 久久精品国产欧美亚洲人人爽| 国产精品中文字幕在线观看| 深夜福利日韩在线看| 日韩欧美有码在线| 日韩在线观看免费| 欧美人与性动交a欧美精品| 精品国产精品三级精品av网址| 麻豆国产va免费精品高清在线| 亚洲成色777777在线观看影院| 精品国产91久久久久久老师| 红桃av永久久久| 久久大大胆人体| 亚洲国产精品福利| 色樱桃影院亚洲精品影院| 久久久亚洲欧洲日产国码aⅴ| 欧美成人性色生活仑片| 亚洲欧美综合图区| 国产精品九九九| 九九久久久久久久久激情| 亚洲a成v人在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产亚洲精品久久久优势| 中文字幕日韩高清| 国产精品综合不卡av| 国产视频精品xxxx| 久久精品欧美视频| 欧洲亚洲女同hd| 亚洲а∨天堂久久精品喷水| 一区二区欧美日韩视频| 亚洲人成人99网站| 久久久久久18| 国产精品视频26uuu| 久久久久久18| 亚洲一区二区三区乱码aⅴ| 久久这里有精品| 亚洲美女中文字幕| 精品日韩美女的视频高清| 国外日韩电影在线观看| 国产精品成人在线| 国产亚洲激情在线| 亚洲第一视频网站| 国产精品∨欧美精品v日韩精品| 亚洲bt欧美bt日本bt| 日韩在线观看视频免费| 欧美日韩亚洲一区二区| 日韩av中文字幕在线| 中文日韩电影网站| 91视频九色网站| 欧美国产高跟鞋裸体秀xxxhd| 日韩免费观看网站| 久久成人人人人精品欧| 久久97精品久久久久久久不卡| 国产这里只有精品| 亚洲欧美国产制服动漫| 91视频免费网站| 欧美综合激情网| 国产成人自拍视频在线观看| 久久不射热爱视频精品| 国产欧美日韩专区发布| 97国产在线视频| 国产精品视频久久久久| 亚洲最大福利视频网站| 亚洲国产精品美女| 国产精品久久久久久久久久99| 日韩欧美有码在线| 色一区av在线| 精品在线小视频| 91伊人影院在线播放| 久久91精品国产91久久久| 欧美亚洲成人精品| 欧美黑人一区二区三区| 日韩成人xxxx| 国产精品福利在线观看网址| 清纯唯美亚洲激情| 亚洲精品一区二区三区婷婷月| 欧美日韩国产综合视频在线观看中文| 久久99久久99精品中文字幕| 国产精品普通话| 久久五月天色综合| 91在线观看免费网站| 51色欧美片视频在线观看| 国产在线观看精品| 久久久久这里只有精品| 亚洲综合精品一区二区| 91高清免费在线观看| 亚洲第五色综合网| 北条麻妃在线一区二区| 亚洲精品视频中文字幕| 国产精品91久久久久久| 福利视频一区二区| 精品日韩视频在线观看| 亚洲**2019国产| 欧美国产精品人人做人人爱|