使用JavaScript和CSS實現(xiàn)文本隔行換色的方法
先來看一個簡單的方法。
在 css 中定義兩種樣式 .odd{...} 和 .even{...} 分別用于奇數(shù)行和偶數(shù)行的不同背景顏色。在網(wǎng)頁加載后通過 javascript 獲取要變色的標簽列表,執(zhí)行如下代碼:
// 當文件加載時,執(zhí)行代碼。 window.onload = function() { // 獲取<ul id="list" />對象 var list = document.getElementById('list'); // 獲取list下面的所有l(wèi)i var items = list.getElementsByTagName('li'); // 遍歷items for (var i = 0; i < items.length; i++) { var className = (i % 2 == 0) ? ' odd' : ' even'; items[i].className += className; } }
實現(xiàn)不同行的不同顏色,這樣變完全在前端處理,不會與后端的邏輯混淆,是一種比較好的解決方案。
那么這種代碼實現(xiàn)起來效果基本上是這樣的:
不過,這種方法存在一些問題:
- 只能對指定的一個列表進行渲染,不能重用
- 不能指定變色的起始位置,在處理表格的變色時,得專門寫處理
- 代碼全在 onload 事件中,對頁面的依賴太高
將其代碼進行改進并移入到一個單獨的函數(shù)中去:
/** * 此方法用于列表的隔行變色效果,可以靈活得為指定ID的列表指定隔行的顏色。 * * @param id 列表的id * @param item 要變色的行的標簽 * @param odd 奇數(shù)行的樣式類名,如果不指定,則默認為odd * @param even 偶數(shù)行的樣式類名,如果不指定,則默認為even * @param start 開始變色的行的索引,如果不指定,則默認為0 * @param end 結(jié)束變色的行的索引,如果不指定,則默認為列表長度 */ function rowRender(id, item, odd, even, start, end) { // 獲取列表容器 var list = document.getElementById(id); // 獲取列表 var items = list.getElementsByTagName(item); // 修正初始位置,如果不是一個數(shù)字或者越界,則從0開始 if (isNaN(start) || (start < 0 || start >= items.length)) { start = 0; } // 修正結(jié)束位置,如果不是一個數(shù)字或者越界,則為列表末尾 if (isNaN(end) || (end < start || end >= items.length)) { end = items.length; } // 如果沒有指定odd,則默認為'odd' odd = odd || 'odd'; // 如果沒有指定even, 則默認為'even' even = even || 'even'; // 遍歷列表并渲染效果 for (var i = start; i < end; i++) { var className = ' ' + ((i % 2 == 0) ? odd : even); items[i].className += className; } }
用法:
window.onload = function() { // 渲梁list1下所有的li標簽,使用默認的樣式和起始位置 rowRender('list1', 'li'); // 渲梁list2下所有的li標簽,使用指定的odd和默認的even,使用指定的起始位置 rowRender('list2', 'li', 'odd1', null, 2, 6); // 渲梁table1下所有的tr標簽,使用指定的odd和even,使用默認的起始位置 rowRender('table1', 'tr', 'tr-odd', 'tr-even'); // 渲梁table2下所有的tr標簽,使用指定的odd和even,使用指定的起始位置 rowRender('table2', 'tr', 'tr-odd', 'tr-even', 1); }
示例:
Table 1
rowRender('table1', 'tr', 'tr-odd', 'tr-even');
Table 2
rowRender('table1', 'tr', 'tr-odd', 'tr-even', 1);
相關(guān)文章
JS判斷不同分辨率調(diào)用不同的CSS樣式文件實現(xiàn)思路及測試代碼
最近看一個網(wǎng)站,發(fā)現(xiàn)顯示器不同的分辨率,樣式文件調(diào)用的也不一樣,于是很好奇研究并寫了一個,經(jīng)測試感覺還不錯,感興趣的你可以來看看哦2013-01-01BootStrap智能表單實戰(zhàn)系列(七)驗證的支持
這篇文章主要介紹了BootStrap智能表單實戰(zhàn)系列(七)驗證的支持 ,凡是涉及到用戶編輯信息然后保存的頁面,都涉及到一個數(shù)據(jù)是否符合要求的檢查,需要客服端和服務(wù)器端的校驗的問題,本文介紹非常詳細,具有參考價值,需要的朋友可以參考下2016-06-06JavaScript實現(xiàn)省市聯(lián)動過程中bug的解決方法
這篇文章主要為大家詳細介紹了解決JavaScript實現(xiàn)省市聯(lián)動過程中的bug,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12