Jump to content
  • 0

Как сделать из таблицы зебру


Ксеня
 Share

Question

Мне надо сделать так, чтобы строки в таблице поочередно меняли цвет от светлого к темному, т.е. чтобы получилась зебра.

Возможно ли это сделать с помощью HTML, если таблица является шаблоном и нет возможности для каждого тэга tr писать параметр фона.

Заранее спасибо, ЖДу сообщений

Link to comment
Share on other sites

Recommended Posts

  • 0
А перед сравнением ну никак нельзя привести все к одному регистру? wink.gif

эм..ну.. наверно можно..

Первый вопрос для Павел Билькис.

Вообще, если честно, самый лучший способ зебрования, это не добавлять полоски, а убирать полоски с элементов с определенным классом.

а в чём разница?

Link to comment
Share on other sites

  • 0
а в чём разница?

Разница в том, что не надо городить сверхогород для зебрования таблиц различных форматов и условий.

Кодер изначально проставляет нужным строкам класс, и задача скрипта - просто удалить через раз нужное имя класса. Таким образом можно отзебровать строки только одной TBODY из всей таблицы, и не трогать другие TBODY.

Скрипт получается простым до ужаса, и эффективным при любых вложениях и сложностях.

Link to comment
Share on other sites

  • 0
В принципе да, это просто :blink:.

Но вроде мы пытались от зебравать таблицу не присваивая ей классы вручную :D

И напоретесь на постоянное переписывание своего скрипта. Потому что требования не бывают одинаковыми.

Link to comment
Share on other sites

  • 0

Ну и я тогда 5 копеек свои подкину. От меня ещё два варианта на чистом ЖС.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
*{ margin: 0; padding: 0;}
table { margin: 20px; border-collapse: collapse; width: 300px;}
td { border: 1px solid #000;}
</style>
</head>

<body>
<table id="table">

<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
</table>
<script type="text/javascript">
var table = document.getElementsByTagName('table')[0]
var child = table.childNodes

for(var i=0;i<child.length;i++)
{
if(child[i].nodeType==1)
{
var tr = child[i].childNodes
for(var k = 0;k<tr.length;k++)
{
if(tr[k].nodeType==1)
{
var td = tr[k].getElementsByTagName('td')
for(var j = 0;j<td.length;j++)
{
if(j%2==0)
{
td[j].style.background = 'red'
}
}
}
}
}
}
/*
var tr = table.getElementsByTagName('tr')
for(var i = 0;i<tr.length;i++) {
var td = tr[i].getElementsByTagName('td')
for(var k = 0;k<td.length;k++){
if(k%2==0) td[k].style.background = 'red'
}
}
*/


</script>
</body>
</html>

Link to comment
Share on other sites

  • 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>odd/even</title>
<style type="text/css">
tr.odd td{background:#ff0;}
</style>
<script type="text/javascript"><!--
function initScript(){
var _table = document.getElementsByTagName('table')
for(var i = 0; i < _table.length; i++){
var _tr = _table[i].getElementsByTagName('tr')
for (var j = 0; j < _tr.length; j+=2){
_tr[j].className += ' odd'
}
}
}
if(window.addEventListener)window.addEventListener("load",initScript,false);
else if(window.attachEvent)window.attachEvent("onload",initScript);
//--></script>
</head>
<body>
<table>
<thead>
<tr>
<th>head</th>
<th>head</th>
<th>head</th>
</tr>
</thead>
<tbody>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
</tbody>
</table>
<table>
<tr>
<th>head</th>
<th>head</th>
<th>head</th>
</tr>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
<tr>
<td>cell</td>
<td>cell</td>
<td>cell</td>
</tr>
</table>
</body>
</html>

Edited by mishka2
Link to comment
Share on other sites

  • 0

psywalker и mishka2, учите мат часть!

psywalker'a понесло не в ту степь ;):

var child = table.childNodes;

Некошерно:

var _tr = _table[i].getElementsByTagName('tr');

Кошерно:

var tr = table.rows;

for (var i = 0; i < tr.length; i++) {
var td = tr[i].cells;

for (var j = 0; j < td.length; j++) {
alert(td[j]);
}
}

Красим таблицу кошерно:

var table = document.getElementsByTagName('table')[0];
var tr = table.rows;

for (var i = 0; i < tr.length; i += 2) tr[i].style.background = '#f00';

Link to comment
Share on other sites

  • 0

Замечания принял.

Красим таблицу кошерно:

Код

var table = document.getElementsByTagName('table')[0];

var tr = table.rows;

for (var i = 0; i < tr.length; i += 2) tr.style.background = '#f00';

Никак с этим не соглашусь. Несогласен что кошерно красить табличку, задавая бг джеесом непосредственно в хтмл. Я обеими руками за классы ;)

Link to comment
Share on other sites

  • 0
Погоди дружище, я чё то запутался, а приведи полный код плиз.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>An XHTML 1.0 Strict standard template</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />

<style type="text/css">
table,
td {
border: #000 1px solid;
}

td {
width: 50px;
height: 50px;
}

.red {
background: red;
}

.blue {
background: lightblue;
}
</style>
</head>

<body>

<table id="rows">
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
</tr>
</table>

<script type="text/javascript">
// красим строки
function zebra1() {
var table = document.getElementById('rows');
var tr = table.rows; // массив строк

for (var i = 0; i < tr.length; i += 2) tr[i].className = 'red';
}

// красим столбцы
function zebra2() {
var table = document.getElementById('rows');
var tr = table.rows; // массив строк

for (var i = 0; i < tr.length; i ++) {
var td = tr[i].cells; // массив ячеек

for (var j = 0; j < td.length; j += 2) td[j].className = 'blue';
}
}

zebra1();
zebra2();
</script>

</body>
</html>

Link to comment
Share on other sites

  • 0
Некошерно:

Код

var _tr = _table.getElementsByTagName('tr');

Кошерно:

Код

var tr = table.rows;

Сорри, а можно пояснить, в чем плюсы, кроме краткости записи? А то у меня от старых цифр "остался осадок" по отношению к спецовым табличным методам...

Link to comment
Share on other sites

  • 0

Ну в тех тестах создается таблица, а тут осуществляется поиск по нодам уже созданной, так что они наверное мало отношения имеют к данному коду. Я точно не знаю, но по моему метод getElementsByTagName(name) осуществляет рекурсивный поиск по всему дереву нод, выбирая нужные, а в массивах rows и cells уже находятся списки нужных нод. А вообще будет время напишу тест и потестирую.

Ну и короче опять же :lol:

Link to comment
Share on other sites

  • 0

getElementsByTagName выбирает все ноды определенного типа внутри данной ноды. rows берет ноды только данной таблицы. Соответственно, при вложенных таблицах зебровалка при помощи первого метода может работать некорректно.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy