Оптимизировать код
Написал небольшую функцию для подсветки строк в таблице.
function colortab(){ // беру таблицы с классом "price_table" var tab = document.getElementsByClassName('price_table'); x=1; for(var i=0; i<=tab.length-1; i++){ // перебираю tr var tr = tab[i].getElementsByTagName('tr'); for (var k=0; k<=tr.length-1; k++){ // через один подкрашиваю td if(x==1){ colors='url("pix_black5.png");'; x=0 }else{ colors='url("'; x=1 } var td = tr[k].getElementsByTagName('td'); for(var m=0; m<=td.length-1; m++){ td[m].style.background=colors } } } } Код вроде работает но как мне кажется написан очень коряво. Как сделать данную функцию более "красивой"? |
Это можно сделать с помощью CSS
|
Кстати да, если вы ориентируетесь на браузеры что умеют .getElementsByClassName, то оные умеют и :nth-child() .
|
Цитата:
<!DOCTYPE html> <html> <head> <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> function colortab() { var colors; // беру таблицы с классом "price_table" var tab = document.getElementsByTagName('table'); x=1; for(var i=0; i<tab.length; i++){ // перебираю tr var tr = tab[i].getElementsByTagName('tr'); for (var k=0; k<tr.length; k++){ // через один подкрашиваю td colors=(k%2==1)? 'red': 'yellow'; var td = tr[k].getElementsByTagName('td'); for(var m=0; m<td.length; m++){ td[m].style.background=colors } } } } </script> </head> <body onload='colortab()'> <table> <tr> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr> <tr> <td>4</td> </tr> </table> </body> </html> |
ksa,
маленькие поправки в вашем варианте кода: переменные x и val не используются, а colors неявно объявлена как глобальная переменная |
Цитата:
Т.ч. там остался только x... :) Эту строчку так же можно удалить... |
Если уж на то пошло:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="tmp.css" /> <style type="text/css"> </style> <script type="text/javascript"> window.onload = function() { var tab = document.getElementsByTagName('table'), i = tab.length; while(i--){ var tr = tab[i].getElementsByTagName('tr'), j = tr.length; while(j--) tr[j].style.background = j%2 ? 'red' : 'yellow'; //а на хрена козе баян? } } </script> </head> <body> <table> <tr> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr> <tr> <td>4</td> </tr> </table> </body> </html> |
Цитата:
|
Мне кажется, лучше вместо того, чтобы указывать цвет в каждой строчке таблицы, создать два правила CSS, а в строчках указывать класс.
<style type="text/css"> .odd { background-color: yellow; } .even { background-color: red; } </style> function colortab(){ // беру таблицы с классом "price_table" var tab = document.getElementsByClassName('price_table'); var x=true; for(var i=0; i<=tab.length-1; i++){ // перебираю tr var tr = tab[i].getElementsByTagName('tr'); for (var k=0; k<=tr.length-1; k++){ tr[k].className=x?"odd":"even"; x=!x; } } } |
Часовой пояс GMT +3, время: 13:35. |