很久沒有寫東西了,固然不是沒東西可寫,只是沒有時間寫。今天抽出點時間來把我最近使用的一些 Javascript 特效的東西貼出來,供本身或者別人查詢使用。最近我在作一個新的 B/S 系統,因爲沒有專門的美工人員和前端人員,因此這個工做我就擔當起來。後端的代碼是個人本職工做,沒有話說。前端的東西就比較麻煩了。我最開始工做之初也作過美工,因爲本人有繪畫的功底,可是後來就把主要的經歷放在了服務端代碼了,由於大部分公司都會有前端人員來完成相應的工做。javascript
當前的公司在技術方面沒有什麼積累,因此,全部的代碼都要經過本身的編寫來實現,前端也不例外。光前端的工做,原本打算2天搞完,後來發現超時2天。如今我要作一套UI的界面,經過後端數據生成前端的 Html Table 的樣式,這部分工做已經完成。這個界面須要實現如下要求:隔行變色,能夠進行全選、反選,選擇的行變換背景色,而且鼠標通過行也要進行變色,同時,若是有選擇的行,必須獲取 CheckBox 的值,之後能夠進行一些列操做。很久沒有寫前端代碼了,也生了很多,這個過程很麻煩,如今終於過來了。爲了防止之後還有這部分的須要,因此今天就把代碼記錄下來,便於之後查詢使用。(這些對於高手來講,很簡單,我不是高手針對前端,但願高手不要拍磚!)css
1、先上一張圖片,你們來看看效果!
前端
2、有了以上圖片,下面就直接貼代碼了,先上 CSS 代碼。
java
1 table{width:100%;border-collapse:collapse;margin:1em 0;} 2 table, td{font:100% Arial, Helvetica, sans-serif;font-size:13px;} 3 th,td{padding:.5em;border:1px solid #fff;} 4 th{background:#328aa4 url(tr_back.gif) repeat-x;color:#fff;font-size:14px;font-weight:bold;} 5 td{background:#e5f1f4;font-size:13px; cursor:pointer} 6 7 tr.even td{background:#e5f1f4;} 8 tr.odd td{background:#f8fbfc;} 9 10 tr.highlight td{background:#ecfbd4;} 11 tr.selected td{background:#bce774;color:#555;} 12 13 td input[type=checkbox] { display:inherit;text-align:center;outline:none } 14 td a.button{text-align:center;margin:0 5px; }
3、Html table 的代碼
編程
1 <table id="myDataTable" cellspacing="0" cellpadding="0"> 2 <thead> 3 <tr> 4 <th width="75"><center><label><input type="checkbox" id="cbMulController" name="cbMulController"></label></center></th> 5 <th width="10%">主鍵</th> 6 <th width="10%">帳號名</th> 7 <th width="10%">開始日期</th> 8 <th width="10%">結束日期</th> 9 <th width="10%">登錄日期</th> 10 <th width="10%">登錄次數</th> 11 <th width="10%">啓用</th> 12 <th width="340"><center>管理</center></th> 13 </tr> 14 </thead> 15 <tbody id="tdbody"> 16 <tr> 17 <td><center><input id="cbMultiple_23" name="cbMultiple" type="checkbox" value="23"/></center></td> 18 <td>23</td> 19 <td>liulei123456</td> 20 <td>2019-03-01 18:19:57</td> 21 <td>2019-06-01 18:19:57</td> 22 <td>2019-03-01 18:19:57</td> 23 <td>1</td> 24 <td>True</td> 25 <td><center> 26 <a href="/Backstage/AccountManage/View/23" class="button button-raised button-primary button-small">查看</a> 27 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/23'" class="button button-raised button-caution button-small">刪除</a> 28 <a href="/Backstage/AccountManage/Modify/23" class="button button-raised button-royal button-small">修改</a></center></td> 29 </tr> 30 <tr> 31 <td><center><input id="cbMultiple_22" name="cbMultiple" type="checkbox" value="22"/></center></td> 32 <td>22</td> 33 <td>liulei12345678</td> 34 <td>2019-02-27 17:43:55</td> 35 <td>2019-05-27 17:43:55</td> 36 <td>2019-02-27 17:43:55</td> 37 <td>0</td> 38 <td>True</td> 39 <td><center> 40 <a href="/Backstage/AccountManage/View/22" class="button button-raised button-primary button-small">查看</a> 41 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/22'" class="button button-raised button-caution button-small">刪除</a> 42 <a href="/Backstage/AccountManage/Modify/22" class="button button-raised button-royal button-small">修改</a></center></td> 43 </tr> 44 <tr> 45 <td><center><input id="cbMultiple_9" name="cbMultiple" type="checkbox" value="9"/></center></td> 46 <td>9</td> 47 <td>YangYanShun</td> 48 <td>2019-01-18 14:08:13</td> 49 <td>2019-02-18 14:19:57</td> 50 <td>2019-01-18 14:19:57</td> 51 <td>1</td> 52 <td>True</td> 53 <td><center> 54 <a href="/Backstage/AccountManage/View/9" class="button button-raised button-primary button-small">查看</a> 55 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/9'" class="button button-raised button-caution button-small">刪除</a> 56 <a href="/Backstage/AccountManage/Modify/9" class="button button-raised button-royal button-small">修改</a></center> 57 </td> 58 </tr> 59 <tr> 60 <td><center><input id="cbMultiple_8" name="cbMultiple" type="checkbox" value="8"/></center></td> 61 <td>8</td> 62 <td>YangYanSi</td> 63 <td>2019-01-18 14:08:13</td> 64 <td>2019-02-18 14:19:43</td> 65 <td>2019-01-18 14:19:43</td> 66 <td>1</td> 67 <td>True</td> 68 <td><center> 69 <a href="/Backstage/AccountManage/View/8" class="button button-raised button-primary button-small">查看</a> 70 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/8'" class="button button-raised button-caution button-small">刪除</a> 71 <a href="/Backstage/AccountManage/Modify/8" class="button button-raised button-royal button-small">修改</a></center> 72 </td> 73 </tr> 74 <tr> 75 <td><center><input id="cbMultiple_7" name="cbMultiple" type="checkbox" value="7"/></center></td> 76 <td>7</td> 77 <td>YangYanZhao</td> 78 <td>2019-01-18 14:08:13</td> 79 <td>2019-02-18 14:19:26</td> 80 <td>2019-01-18 14:19:26</td> 81 <td>1</td> 82 <td>True</td> 83 <td><center> 84 <a href="/Backstage/AccountManage/View/7" class="button button-raised button-primary button-small">查看</a> 85 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/7'" class="button button-raised button-caution button-small">刪除</a> 86 <a href="/Backstage/AccountManage/Modify/7" class="button button-raised button-royal button-small">修改</a></center></td> 87 </tr> 88 <tr> 89 <td><center><input id="cbMultiple_6" name="cbMultiple" type="checkbox" value="6"/></center></td> 90 <td>6</td> 91 <td>YangYanDe</td> 92 <td>2019-01-18 14:08:13</td> 93 <td>2019-02-18 14:18:59</td> 94 <td>2019-01-18 14:18:59</td> 95 <td>1</td> 96 <td>True</td> 97 <td><center> 98 <a href="/Backstage/AccountManage/View/6" class="button button-raised button-primary button-small">查看</a> 99 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/6'" class="button button-raised button-caution button-small">刪除</a> 100 <a href="/Backstage/AccountManage/Modify/6" class="button button-raised button-royal button-small">修改</a></center> 101 </td> 102 </tr> 103 <tr><td><center><input id="cbMultiple_5" name="cbMultiple" type="checkbox" value="5"/></center></td> 104 <td>5</td> 105 <td>YangYanHui</td> 106 <td>2019-01-18 14:08:13</td> 107 <td>2019-02-18 14:18:08</td> 108 <td>2019-01-18 14:18:08</td> 109 <td>1</td> 110 <td>True</td> 111 <td> 112 <center> 113 <a href="/Backstage/AccountManage/View/5" class="button button-raised button-primary button-small">查看</a> 114 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/5'" class="button button-raised button-caution button-small">刪除</a> 115 <a href="/Backstage/AccountManage/Modify/5" class="button button-raised button-royal button-small">修改</a></center></td> 116 </tr> 117 <tr> 118 <td><center><input id="cbMultiple_4" name="cbMultiple" type="checkbox" value="4"/></center></td> 119 <td>4</td> 120 <td>YangYanGuang</td> 121 <td>2019-01-18 14:08:13</td> 122 <td>2019-02-18 14:10:33</td> 123 <td>2019-01-18 14:10:33</td> 124 <td>1</td> 125 <td>True</td> 126 <td><center> 127 <a href="/Backstage/AccountManage/View/4" class="button button-raised button-primary button-small">查看</a> 128 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/4'" class="button button-raised button-caution button-small">刪除</a> 129 <a href="/Backstage/AccountManage/Modify/4" class="button button-raised button-royal button-small">修改</a></center></td> 130 </tr> 131 <tr><td><center><input id="cbMultiple_3" name="cbMultiple" type="checkbox" value="3"/></center></td> 132 <td>3</td> 133 <td>YangYanDing</td> 134 <td>2019-01-18 14:08:13</td> 135 <td>2019-02-18 14:10:12</td> 136 <td>2019-01-18 14:10:12</td> 137 <td>1</td> 138 <td>True</td> 139 <td><center> 140 <a href="/Backstage/AccountManage/View/3" class="button button-raised button-primary button-small">查看</a> 141 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/3'" class="button button-raised button-caution button-small">刪除</a> 142 <a href="/Backstage/AccountManage/Modify/3" class="button button-raised button-royal button-small">修改</a></center></td> 143 </tr> 144 <tr><td><center><input id="cbMultiple_2" name="cbMultiple" type="checkbox" value="2"/></center></td> 145 <td>2</td> 146 <td>YangYanPing</td> 147 <td>2019-01-18 14:08:13</td> 148 <td>2019-02-18 14:09:30</td> 149 <td>2019-01-18 14:09:30</td> 150 <td>1</td> 151 <td>True</td> 152 <td><center> 153 <a href="/Backstage/AccountManage/View/2" class="button button-raised button-primary button-small">查看</a> 154 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/2'" class="button button-raised button-caution button-small">刪除</a> 155 <a href="/Backstage/AccountManage/Modify/2" class="button button-raised button-royal button-small">修改</a></center></td> 156 </tr> 157 <tr> 158 <td><center><input id="cbMultiple_1" name="cbMultiple" type="checkbox" value="1"/></center></td> 159 <td>1</td> 160 <td>Administrator123</td> 161 <td>2019-01-18 14:08:13</td> 162 <td>2019-05-05 14:42:35</td> 163 <td>2019-03-06 14:42:35</td> 164 <td>202</td> 165 <td>True</td> 166 <td><center> 167 <a href="/Backstage/AccountManage/View/1" class="button button-raised button-primary button-small">查看</a> 168 <a href="javascript:if(confirm('確實要刪除嗎?'))location='/Backstage/AccountManage/Delete/1'" class="button button-raised button-caution button-small">刪除</a> 169 <a href="/Backstage/AccountManage/Modify/1" class="button button-raised button-royal button-small">修改</a></center> 170 </td> 171 </tr></tbody></table>
4、如下就是最主要的代碼了,JavaScript 代碼,該代碼依賴 JQuery,使用以前請先引入。後端
1 $(document).ready(function () { 2 // 例子1: 3 //-隔行,滑動,點擊 變色 4 $('.cssraindemo1 tbody tr:even').addClass('odd'); 5 $('.cssraindemo1 tbody tr').hover( 6 function () { $(this).addClass('highlight'); }, 7 function () { $(this).removeClass('highlight'); } 8 ); 9 $('.cssraindemo1 tbody tr').click( 10 function () { $(this).toggleClass('selected'); } 11 ); 12 13 14 //例子2:能夠選擇 checkbox 或者點擊行控制行的顏色和 checkbox 是不是選中狀態: 15 $('#myDataTable tbody tr:even').addClass('odd'); 16 $('#myDataTable tbody tr').hover( 17 function () { $(this).addClass('highlight'); }, 18 function () { $(this).removeClass('highlight'); } 19 ); 20 // 若是複選框默認狀況下是選擇的,變色. 21 $('#myDataTable input[type="checkbox"]:checked').parents('tr').addClass('selected'); 22 // 複選框 23 $('#myDataTable tbody tr').find("td:first").click( 24 function () { 25 if ($(this).parents('tr').hasClass('selected')) { 26 $(this).parents('tr').removeClass('selected'); 27 $(this).find('input[type="checkbox"]').removeAttr('checked'); 28 29 //本身增長的代碼,獲取選擇 CheckBox 的值 30 var replaceValue = $(this).find('input[type="checkbox"]').val(); 31 $("input[type=text]", document.forms[0]).each(function () { 32 if (this.name == "txtDataKeys") { 33 if (document.getElementById(this.name).value.length != 0) { 34 if (document.getElementById(this.name).value.indexOf("," + replaceValue) != -1) { 35 document.getElementById(this.name).value = document.getElementById(this.name).value.replace("," + replaceValue, ""); 36 } 37 else if (document.getElementById(this.name).value.indexOf(replaceValue + ",") != -1) { 38 document.getElementById(this.name).value = document.getElementById(this.name).value.replace(replaceValue + ",", ""); 39 } 40 else { 41 document.getElementById(this.name).value = document.getElementById(this.name).value.replace(replaceValue, ""); 42 } 43 } 44 } 45 }); 46 } else { 47 $(this).parents('tr').addClass('selected'); 48 $(this).find('input[type="checkbox"]').attr('checked', 'checked'); 49 50 //本身增長的代碼,獲取選擇 CheckBox 的值 51 var replaceValue = $(this).find('input[type="checkbox"]').val(); 52 $("input[type=text]", document.forms[0]).each(function () { 53 if (this.name == "txtDataKeys") { 54 if (document.getElementById(this.name).value == "") { 55 document.getElementById(this.name).value = replaceValue; 56 } 57 else { 58 document.getElementById(this.name).value += "," + replaceValue; 59 } 60 } 61 }); 62 } 63 } 64 ); 65 66 67 //例子3:選擇 checkbox 控制行的顏色 68 $('#myDataTable tbody tr:even').addClass('odd'); 69 $('#myDataTable tbody tr').hover( 70 function () { $(this).addClass('highlight'); }, 71 function () { $(this).removeClass('highlight'); } 72 ); 73 //若是複選框默認狀況下是選擇的,變色. 74 $('#myDataTable tbody input[type="checkbox"]:checked').parents('tr').addClass('selected'); 75 //複選框 76 $('#myDataTable tbody input[type="checkbox"]').change(function () { 77 if ($(this).is(':checked') == false) { 78 $(this).parents('tr').removeClass('selected'); 79 80 //本身增長的代碼,獲取選擇 CheckBox 的值 81 var replaceValue = $(this).val(); 82 $("input[type=text]", document.forms[1]).each(function () { 83 if (this.name == "txtDataKeys") { 84 if (document.getElementById(this.name).value.length != 0) { 85 if (document.getElementById(this.name).value.indexOf("," + replaceValue) != -1) { 86 document.getElementById(this.name).value = document.getElementById(this.name).value.replace("," + replaceValue, ""); 87 } 88 else if (document.getElementById(this.name).value.indexOf(replaceValue + ",") != -1) { 89 document.getElementById(this.name).value = document.getElementById(this.name).value.replace(replaceValue + ",", ""); 90 } 91 else { 92 document.getElementById(this.name).value = document.getElementById(this.name).value.replace(replaceValue, ""); 93 } 94 } 95 } 96 }); 97 } else { 98 $(this).parents('tr').addClass('selected'); 99 100 //本身增長的代碼,獲取選擇 CheckBox 的值 101 var replaceValue = $(this).val(); 102 $("input[type=text]", document.forms[1]).each(function () { 103 if (this.name == "txtDataKeys") { 104 if (document.getElementById(this.name).value == "") { 105 document.getElementById(this.name).value = replaceValue; 106 } 107 else { 108 document.getElementById(this.name).value += "," + replaceValue; 109 } 110 } 111 }); 112 } 113 }); 114 115 //例子4: 116 $('.cssraindemo3 tbody tr:even').addClass('odd'); 117 $('.cssraindemo3 tbody tr').hover( 118 function () { $(this).addClass('highlight'); }, 119 function () { $(this).removeClass('highlight'); } 120 ); 121 // 若是單選框默認狀況下是選擇的,變色. 122 $('.cssraindemo3 input[type="radio"]:checked').parents('tr').addClass('selected'); 123 124 // 單選框 125 $('.cssraindemo3 tbody tr').click( 126 function () { 127 $(this).siblings().removeClass('selected'); 128 $(this).addClass('selected'); 129 $(this).find('input[type="radio"]').attr('checked', 'checked'); 130 } 131 ); 132 }); 133 134 //全選或者反選 135 //一鍵控制全選、反選、全不選 136 $(document).ready(function () { 137 $('#myDataTable thead #cbMulController').change(function () { 138 if ($(this).is(':checked')) { 139 //若是全選是選擇狀態,其餘全部的checkbox 沒有選擇的編程選擇狀態,有選擇的狀態變成沒有選中的狀態 140 var box = $('#myDataTable tbody input[name="cbMultiple"]'); 141 $('#myDataTable tbody input[name="cbMultiple"]').each(function () { 142 $(this).prop('checked', $(this).is(':checked') ? false : true); 143 144 //改變所在行的背景顏色,代表是選擇的行 145 if ($(this).is(':checked')) { 146 $(this).parents('tr').addClass('selected'); 147 } 148 else { 149 if ($(this).parents('tr').hasClass('selected')) { 150 $(this).parents('tr').removeClass('selected'); 151 } 152 } 153 }); 154 } 155 else { 156 //若是全選的是取消狀態,剩餘的checkbox也取消選中 157 $('#myDataTable tbody input[name="cbMultiple"]').each(function () { 158 $(this).prop('checked', $(this).is(':checked') ? false : true); 159 160 //改變所在行的背景顏色,代表是選擇的行 161 if ($(this).is(':checked')) { 162 $(this).parents('tr').addClass('selected'); 163 } 164 else { 165 if ($(this).parents('tr').hasClass('selected')) { 166 $(this).parents('tr').removeClass('selected'); 167 } 168 } 169 }); 170 } 171 172 //獲取全部選擇的 checkbox 的值 173 var keysArray = new Array(); 174 $('#myDataTable tbody input[type="checkbox"]:checked').each(function () { 175 keysArray.push($(this).val());//向數組中添加元素 176 }); 177 var keysValue = keysArray.join(',');//將數組元素鏈接起來以構建一個字符串 178 //獲取值並賦值給 hidden 域 179 document.getElementById("txtDataKeys").value = keysValue; 180 }); 181 });
5、總結了數組
好了,終於寫完了,之後不怕了,這個東西,要想馬上能找到合適的代碼不是那麼容易,吃一塹長一智,我把這些常常用到的,就留下來,下次再找就容易了。不忘初心,繼續努力。ui