Оптимизировать код
Написал небольшую функцию для подсветки строк в таблице.
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, время: 14:08. |