本文實例分析了JS實現的樣式切換功能tableCSS。分享給大家供大家參考,具體如下:
把前陣子寫的JQ插件函數(alterBgColor )改寫成不基于JQ的代碼,還添加了一個click樣式效果
代碼風格還是按照JQ插件風格來寫,使用了閉包來循環設置TR元素的樣式
function TableCss(options){ //如果沒參數,就退出 if(arguments.length < 1 || !document.getElementById(options.tableName) ) { return ;} //參數及默認參數 var options = { tableName : options.tableName, evenClass : options.evenClass || "tr_even", oddClass : options.oddClass || "tr_odd", clickClass : options.clickClass || "tr_click", hoverClass: options.hoverClass || "tr_hover" } //根據ID找到表格元素 var tableName = document.getElementById(options.tableName); var tr = tableName.getElementsByTagName("tr"); //對TR元素循環設置 for(var i=0, len=tr.length; i<len; i++){ //用了閉包 (function(k){ //設置奇偶行樣式 tr[k].className = (k%2==0)? options.oddClass : options.evenClass; //點擊樣式 tr[k].onclick = function(){ if (tr[k].className == options.clickClass){ tr[k].className = (k%2==0)? options.oddClass : options.evenClass; } else { tr[k].className = options.clickClass; } } //鼠標HOVER樣式,如果已經是點擊樣式,則不變化 tr[k].onmouseover = function(){ if(tr[k].className == options.clickClass ){ return false;} else { tr[k].className = options.hoverClass;} } tr[k].onmouseout = function(){ if(tr[k].className == options.clickClass){ return false;} else { tr[k].className = (k%2==0)? options.oddClass : options.evenClass; } } })(i) }}//調用TableCss({tableName:"tb1"});
效果很簡單,代碼也很簡單.
只是這句tr[k].className = (k%2==0)? options.oddClass : options.evenClass;寫了三遍,本來是寫在一個function里的,但不知道在閉包里那么寫會不會影響性能(任務管理器里也沒看到有CPU使用率暴漲的情況),最后還是決定這么寫,呵呵.
測試代碼:
<style><!--#tb1,#tb1 td{ border:1px solid #000;border-collapse:collapse}.tr_even { background:#CCC;}.tr_odd { background:#9FF;}.tr_hover { background:#FF6;}.tr_click { background:#00F;}--></style><table id="tb1" cellpadding="1" cellspacing="1"> <tr> <td>123</td> <td>456</td> <td>123</td> <td>456</td> <td>123</td> <td>456</td> </tr> <tr> <td>123</td> <td>456</td> <td>123</td> <td>456</td> <td>123</td> <td>456</td> </tr> <tr> <td>123</td> <td>456</td> <td>123</td> <td>456</td> <td>123</td> <td>456</td> </tr> <tr> <td>123</td> <td>456</td> <td>123</td> <td>456</td> <td>123</td> <td>456</td> </tr></table>
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript數學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
新聞熱點
疑難解答