久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

javascript表格操作大全:表格排序/倒序,、動(dòng)態(tài)添加列、批量刪除,、刪除一行,、隔行變色、鼠標(biāo)懸浮切換背景色,、全選/反選,。(IE、火狐都兼容)

 quasiceo 2015-01-16
分類(lèi): javaScript 2012-08-16 19:51 3617人閱讀 評(píng)論(2) 收藏 舉報(bào)


表格.html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www./1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <title>表格操作</title>  
  6.     <script type= "text/javascript" src="domutil.js" ></script>  
  7. </head>  
  8.   
  9. <body>    
  10.       
  11.                 <!--以下數(shù)據(jù)純屬虛構(gòu)-->  
  12.   
  13.     <table id="tab" border="1" style =" align:center;text-align:center ">  
  14.         <thead style="background:#0000FF" onmouseover="over(this)" onmouseout="out(this)">  
  15.             <tr>  
  16.                 <th><input type="checkbox" name="quan" onclick="quan()" style="cursor:pointer"/>全選</th>  
  17.                 <th onclick="sortTable('tab',1,'int')" style="cursor:pointer">編號(hào)</th>  
  18.                 <th onclick="sortTable('tab',2,'漢字')" style="cursor:pointer">編程語(yǔ)言</th>  
  19.                 <th onclick="sortTable('tab',3,'漢字')" style="cursor:pointer">所屬公司</th>  
  20.                 <th onclick="sortTable('tab',4,'float')" style="cursor:pointer">市場(chǎng)份額</th>  
  21.                 <th onclick="sortTable('tab',5,'date')" style="cursor:pointer">誕生日期</th>  
  22.                 <th style="cursor:pointer">操作</th>  
  23.             </tr>  
  24.         </thead>  
  25.         <tbody id="tbody">  
  26.             <tr style="background:#00FF00" onmouseover="over(this)" onmouseout="out(this)">  
  27.                 <td><input type="checkbox" name="checkbox" /></td>  
  28.                 <td width=100 id="ID">4</td>  
  29.                 <td id="name" width="100">Java</td>  
  30.                 <td id="company" width="100" >甲骨文公司</td>  
  31.                 <td id="age" width="100">47.6</td>  
  32.                 <td id="date" width="100">1970/09/09</td>  
  33.                 <td ><input type="button" value="刪除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  34.             </tr>  
  35.             <tr style="background:#00FFFF" onmouseover="over(this)" onmouseout="out(this)">  
  36.                 <td><input type="checkbox" name="checkbox" /></td>  
  37.                 <td width=100 id="ID">6</td>  
  38.                 <td id="name" width="100">ASP</td>  
  39.                 <td id="company" width="100">微軟公司</td>  
  40.                 <td id="age" width="100">30.3</td>  
  41.                 <td id="date" width="100">1980/09/09</td>  
  42.                 <td ><input type="button" value="刪除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  43.             </tr>  
  44.             <tr style="background:#00FF00" onmouseover="over(this)" onmouseout="out(this)">  
  45.                 <td><input type="checkbox" name="checkbox" /></td>  
  46.                 <td width=100 id="ID">3</td>  
  47.                 <td id="name" width="100">PHP</td>  
  48.                 <td id="company" width="100">公司Zend</td>  
  49.                 <td id="age" width="100">22.1</td>  
  50.                 <td id="date" width="100">1994/07/09</td>  
  51.                 <td ><input type="button" value="刪除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  52.             </tr>  
  53.             <tr style="background:#00FFFF" onmouseover="over(this)" onmouseout="out(this)">  
  54.                 <td><input type="checkbox" name="checkbox" /></td>  
  55.                 <td width=100 id="ID">1</td>  
  56.                 <td id="name" width="100">Objective-C</td>  
  57.                 <td id="company" width="100" >Stepstone公司</td>  
  58.                 <td id="age" width="100">35.9</td>  
  59.                 <td id="date" width="100">1980/01/01</td>  
  60.                 <td ><input type="button" value="刪除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  61.             </tr>  
  62.             <tr style="background:#00FF00" onmouseover="over(this)" onmouseout="out(this)">  
  63.                 <td><input type="checkbox" name="checkbox" /></td>  
  64.                 <td width=100 id="ID">5</td>  
  65.                 <td id="name" width="100">VB</td>  
  66.                 <td id="company" width="100">美國(guó)微軟</td>  
  67.                 <td id="age" width="100">32.7</td>  
  68.                 <td id="date" width="100">1991/09/09</td>  
  69.                 <td ><input type="button" value="刪除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  70.             </tr>  
  71.             <tr style="background:#00FFFF" onmouseover="over(this)" onmouseout="out(this)">  
  72.                 <td><input type="checkbox" name="checkbox" /></td>  
  73.                 <td width=100 id="ID">2</td>  
  74.                 <td id="name" width="100">javascript</td>  
  75.                 <td id="company" width="100">Netscape</td>  
  76.                 <td id="age" width="100">33.8</td>  
  77.                 <td id="date" width="100">1992/06/09</td>  
  78.                 <td ><input type="button" value="刪除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  79.             </tr>  
  80.         </tbody>  
  81.         <tfoot style="background:#C0C0C0">  
  82.             <tr onmouseover="over(this)" onmouseout="out(this)">  
  83.                 <td><input type="checkbox" name="fan" onclick="fan()"/>反選</td>  
  84.                 <td colspan="6">  
  85.                 <input type="button" value="添加數(shù)據(jù)" onclick="addRow()" />       
  86.                 <input type="button" value="刪除選中行" onclick="deleteChecked()"/>  
  87.                 </td>  
  88.             </tr>  
  89.         </tfoot>  
  90.     </table>  
  91.       
  92. </body>   
  93. <script type="text/javascript">   
  94.         /* 
  95.         全局變量 
  96.         ID:    保存插入數(shù)據(jù)的編號(hào) 
  97.         color:保存原來(lái)的背景色 
  98.         */  
  99.         var ID,color;  
  100.         window.onload = function(){  
  101.             var myTab = $q("#tab");  
  102.             ID = myTab.rows.length-1;  
  103.         }  
  104.         //鼠標(biāo)懸浮在某元素時(shí)  
  105.         function over(node){  
  106.             color = node.style.backgroundColor;  
  107.             node.style.backgroundColor = '#FF00FF';  
  108.         }  
  109.         //鼠標(biāo)離開(kāi)某元素時(shí)  
  110.         function out(node){  
  111.             node.style.backgroundColor = color;  
  112.         }  
  113.         //全選  
  114.         function quan(){  
  115.             var checkArr = $q("$checkbox"); //得到tbody行的集合  
  116.             var qArr = $q("$quan");   
  117.             if(qArr[0].checked){ //如果是全選,設(shè)置全部選中  
  118.                 for(var i=0;i<checkArr.length;i++){     
  119.                     checkArr[i].checked = true;  
  120.                 }  
  121.             }else{  //如果沒(méi)有全選,設(shè)置全部沒(méi)選中  
  122.                 for(var i=0;i<checkArr.length;i++){    
  123.                     checkArr[i].checked = false;  
  124.                 }  
  125.             }  
  126.         }  
  127.   
  128.         //反選  
  129.         function fan(){  
  130.             var checkArr = $q("$checkbox"); //得到tbody行的集合  
  131.             for(var i=0;i<checkArr.length;i++){  //循環(huán)將所有行反選  
  132.                 checkArr[i].checked = checkArr[i].checked ? false : true;  
  133.             }  
  134.         }  
  135.   
  136.         //添加一行數(shù)據(jù)  
  137.         function addRow(){  
  138.             var myTab = $q("#tab");  
  139.             var rowLength = myTab.rows.length;  
  140.             var newRow = document.createElement("tr"); //創(chuàng)建一行  
  141.             //設(shè)置隔行變色  
  142.             if(rowLength%2 == 1){  
  143.                 newRow.style.background = "#00FFFF";  
  144.             }else{  
  145.                 newRow.style.background = "#00FF00";  
  146.             }  
  147.             if(newRow.addEventListener){  
  148.                 //給創(chuàng)建的行添加鼠標(biāo)懸浮的事件  
  149.                 newRow.addEventListener("mouseover",function(){over(newRow);},false);  
  150.                 //給創(chuàng)建的行添加鼠標(biāo)離開(kāi)的事件  
  151.                 newRow.addEventListener("mouseout",function(){out(newRow);},false);  
  152.             }else if(newRow.attachEvent){  
  153.                 //給創(chuàng)建的行添加鼠標(biāo)懸浮的事件  
  154.                 newRow.attachEvent("onmouseover",function(){over(newRow);});  
  155.                 //給創(chuàng)建的行添加鼠標(biāo)離開(kāi)的事件  
  156.                 newRow.attachEvent("onmouseout",function(){out(newRow);});  
  157.             }else{  
  158.                 //給創(chuàng)建的行添加鼠標(biāo)懸浮的事件  
  159.                 newRow.onmouseover = function(){over(newRow);};  
  160.                 //給創(chuàng)建的行添加鼠標(biāo)離開(kāi)的事件  
  161.                 newRow.onmouseout = function(){out(newRow);};  
  162.             }    
  163.             //創(chuàng)建多列  
  164.             var newCell1 = document.createElement("td");  
  165.             newCell1.innerHTML = '<input type="checkbox" name="checkbox" />';  
  166.             var newCell2 = document.createElement("td");  
  167.             newCell2.innerHTML = ID;  
  168.             ID += 1;  
  169.             var newCell3 = document.createElement("td");  
  170.             newCell3.innerHTML = prompt("請(qǐng)輸入編程語(yǔ)言:","");  
  171.             var newCell4 = document.createElement("td");  
  172.             newCell4.innerHTML = prompt("請(qǐng)輸入所屬公司:","");  
  173.             var newCell5 = document.createElement("td");  
  174.             newCell5.innerHTML = prompt("請(qǐng)輸入市場(chǎng)份額:","");  
  175.             var newCell6 = document.createElement("td");  
  176.             newCell6.innerHTML = prompt("請(qǐng)輸入誕生日期:","");  
  177.             var newCell7 = document.createElement("td");  
  178.             newCell7.innerHTML = '<input type="button" value="刪除" onclick="deleteRow(this.parentNode.parentNode)" />' ;  
  179.             //將創(chuàng)建的多列添加到行  
  180.             newRow.appendChild(newCell1);  
  181.             newRow.appendChild(newCell2);  
  182.             newRow.appendChild(newCell3);  
  183.             newRow.appendChild(newCell4);  
  184.             newRow.appendChild(newCell5);  
  185.             newRow.appendChild(newCell6);  
  186.             newRow.appendChild(newCell7);  
  187.             var tbody = myTab.tBodies[0]; //獲取表格的tbody  
  188.             tbody.appendChild(newRow);  //將創(chuàng)建的行添加到表格body里  
  189.         }   
  190.         //刪除一行數(shù)據(jù)  
  191.         function deleteRow(currentRow){  
  192.             var tab = $q("#tab"); //獲得表格節(jié)點(diǎn)  
  193.             tab.deleteRow(currentRow.rowIndex); //刪除選中的行  
  194.         }  
  195.         //刪除多行數(shù)據(jù)  
  196.         function deleteChecked(){  
  197.             var tab = $q("#tab"); //獲得表格節(jié)點(diǎn)  
  198.             var checkArr = $q("$checkbox");  //得到tbody行的集合  
  199.             for(var i=0;i<checkArr.length;i++){  
  200.                 if(checkArr[i].checked){  //用循環(huán)刪除選中的行  
  201.                     var index = checkArr[i].parentNode.parentNode.rowIndex;  
  202.                     tab.deleteRow(index);  
  203.                 }  
  204.             }  
  205.         }  
  206.         //轉(zhuǎn)換數(shù)據(jù)類(lèi)型,v為值,,dataType為數(shù)據(jù)類(lèi)型  
  207.         function convert(v,dataType){  
  208.             switch(dataType){  
  209.                 case "int":  
  210.                     return parseInt(v);  
  211.                 case "float":  
  212.                     return parseFloat(v);  
  213.                 case "date":  
  214.                     return (new Date(Date.parse(v)));  
  215.                 default:  
  216.                     return v.toString();  
  217.             }  
  218.         }  
  219.         //排序函數(shù),index為索引,type為數(shù)據(jù)類(lèi)型  
  220.         function pai(index,dataType){  
  221.             if(dataType === "漢字"){  
  222.                 return function compare(a,b){  
  223.                             var str1 = convert(a.cells[index].innerHTML,dataType);   
  224.                             var str2 = convert(b.cells[index].innerHTML,dataType);  
  225.                             return str1.localeCompare(str2);  
  226.                         };  
  227.             }else{  
  228.                 return function compare(a,b){  
  229.                             //var str1 = convert(a.cells[index].firstChild.nodeValue,dataType);  
  230.                             //var str2 = convert(b.cells[index].firstChild.nodeValue,dataType);  
  231.                             var str1 = convert(a.cells[index].innerHTML,dataType); //兩種方法效果一樣  
  232.                             var str2 = convert(b.cells[index].innerHTML,dataType);  
  233.                             if(str1 < str2){  
  234.                                 return -1;  
  235.                             }else if(str1 > str2){  
  236.                                 return 1;  
  237.                             }else{   
  238.                                 return 0;  
  239.                             }  
  240.                         };  
  241.             }  
  242.         }  
  243.         //排序的過(guò)程  
  244.         function sortTable(tableID,index,dataType){  
  245.             var tab = $q("#"+tableID); //獲取表格的ID  
  246.             var td = tab.tBodies[0]; //獲取表格的tbody  
  247.             var newRows = td.rows;   //獲取tbody里的所有行  
  248.             var arr = new Array();   //定義arr數(shù)組用于存放tbody里的行  
  249.             //用循環(huán)將所有行放入數(shù)組  
  250.             for(var i=0;i<newRows.length;i++){  
  251.                 arr.push(newRows[i]);  
  252.             }  
  253.             //判斷最后一次排序的列是否與現(xiàn)在要進(jìn)行排序的列相同,,如果是就反序排列  
  254.             if(tab.sortCol == index){  
  255.                 arr.reverse();  
  256.             }else{   
  257.                 //使用數(shù)組的sort方法,,傳進(jìn)排序函數(shù)  
  258.                 arr.sort(pai(index,dataType));  
  259.             }  
  260.             var oFragment = document.createDocumentFragment(); //創(chuàng)建文檔碎片  
  261.             for (var i=0; i < arr.length; i++) {  //把排序過(guò)的aTRs數(shù)組成員依次添加到文檔碎片  
  262.                 if(i%2 == 1){  
  263.                     arr[i].style.background = "#00FFFF";  
  264.                     oFragment.appendChild(arr[i]);  
  265.                 }else{  
  266.                     arr[i].style.background = "#00FF00";  
  267.                     oFragment.appendChild(arr[i]);  
  268.                 }  
  269.             }  
  270.             td.appendChild(oFragment); //把文檔碎片添加到tbody,完成排序后的顯示更新  
  271.             tab.sortCol = index;  //記錄最后一次排序的列索引  
  272.         }  
  273.     </script>  
  274. </html>  

domutil.js

(此js為課堂筆記整理而成,有部分代碼本次沒(méi)有用到的)

  1. var CustomFunctions = {  
  2.     //獲取子節(jié)點(diǎn)的集合(ie,,ff通用)  
  3.     getChildNodes:function(node){  
  4.         var arr = [];  
  5.         var nodes = node.childNodes;  
  6.         for(var i in nodes){  
  7.             if(nodes[i].nodeType == 1){ //查找元素節(jié)點(diǎn)  
  8.                 arr.push(nodes[i]);  
  9.             }  
  10.         }  
  11.         return arr;  
  12.     },  
  13.     //獲取第一個(gè)元素子節(jié)點(diǎn)(ie,,ff通用)  
  14.     getFirstElementChild : function(node){  
  15.         return node.firstElementChild ? node.firstElementChild : node.firstChild ;  
  16.     },  
  17.     //獲取最后一個(gè)元素子節(jié)點(diǎn)(ie,ff通用)  
  18.     getLastElementChild : function(node){  
  19.         return node.lastElementChild ? node.lastElementChild : node.lastChild ;  
  20.     },  
  21.     //獲取上一個(gè)相鄰節(jié)點(diǎn)(ie,,ff通用)  
  22.     getPreviousSibling : function(node){  
  23.         //找到上一個(gè)節(jié)點(diǎn)就返回節(jié)點(diǎn),,沒(méi)找到就返回null  
  24.         do{  
  25.             node = node.previousSibling;  
  26.         }while(node && node.nodeType!=1)  
  27.         return node;  
  28.     },  
  29.     //獲取下一個(gè)相鄰節(jié)點(diǎn) (ie,ff通用)  
  30.     getNextSibling : function(node){  
  31.         //找到下一個(gè)節(jié)點(diǎn)就返回節(jié)點(diǎn),,沒(méi)找到就返回null  
  32.         do{  
  33.             node = node.nextSibling;  
  34.         }while(node && node.nodeType!=1)  
  35.         return node;  
  36.     },  
  37.     //將元素插入到指定的node節(jié)點(diǎn)后面  
  38.     insertAfter : function(newNode,targetNode){  
  39.         if(newNode && targetNode){  
  40.             var parent = targetNode.parentNode;  
  41.             var nextNode = this.getNextSibling(targetNode);  
  42.             if(nextNode && parent){  
  43.                 parent.insertBefore(newNode,nextNode);  
  44.             }else{  
  45.                 parent.appendChild(newNode);  
  46.             }  
  47.         }  
  48.     }  
  49. };  
  50.   
  51. /*清除字符串前后的空格*/  
  52. String.prototype.trim=function(){  
  53.     return this.replace(/^\s*|\s*$/,"");  
  54. };  
  55.   
  56. /* 
  57. 查找元素: 
  58. $q("div"):bytagname 
  59. $q(".l"):byclassname 
  60. $q("#l"):byid 
  61. $q("$name"):byname 
  62. selector:選擇符 
  63. parentElement:父元素 
  64. */  
  65. window.$q = function(selector,parentElement){  
  66.     if(selector && (typeof selector) === 'string'){  
  67.         selector = selector.trim();//去掉前后空格  
  68.         var parentEl = parentElement || document;  
  69.         var nodeArr = new Array();    
  70.         var firstChar = selector.substr(0,1);   //取得第一個(gè)字符  
  71.         //以#開(kāi)頭,,表示根據(jù)ID查找  
  72.         if(firstChar === '#'){  
  73.             return parentEl.getElementById(selector.substr(1));  
  74.         }  
  75.         //以$開(kāi)頭,根據(jù)name查找  
  76.         else if(firstChar === '$'){  
  77.             var all = parentEl.getElementsByTagName("*");  
  78.             for(var i=0;i<all.length;i++){  
  79.                 var name = all[i].getAttribute("name");  
  80.                 if(name === selector.substr(1)){  
  81.                     nodeArr.push(all[i]);  
  82.                 }  
  83.             }  
  84.             delete i;  
  85.             return nodeArr;  
  86.         }  
  87.         //以.開(kāi)頭,,根據(jù)class名查找  
  88.         else if(firstChar === '.'){  
  89.             var className = selector.substr(1);  
  90.             if(parentEl.getElementsByClassName){  
  91.                 return parentEl.getElementsByClassName(className);  
  92.             }  
  93.             else{  
  94.                 var childList = parentEl.getElementsByTagName("*");  
  95.                 for(var i=0;i<childList.length;i++){  
  96.                     var nodeClassName = childList[i].className;  
  97.                     var classNameArr = nodeClassName.split(' ');  
  98.                     for(var j=0;j<classNameArr.length;j++){  
  99.                         if(classNameArr[j]===className){  
  100.                             nodeArr.push(childList[i]);  
  101.                         }  
  102.                     }  
  103.                     delete j;  
  104.                 }  
  105.                 delete i;  
  106.                 return nodeArr;  
  107.             }  
  108.         }  
  109.         //否則,,根據(jù)標(biāo)簽名查找  
  110.         else{  
  111.             return parentEl.getElementsByTagName(selector);  
  112.         }  
  113.           
  114.     }  
  115.     else{  
  116.         return document.all || document.getElementsByTagName("*");  
  117.     }  
  118.   
  119. };  


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約