Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Изменение цвета строки таблицы. (https://javascript.ru/forum/events/11799-izmenenie-cveta-stroki-tablicy.html)

slavazav 14.09.2010 09:59

Изменение цвета строки таблицы.
 
Народ помогите разобраться с функцией.
Суть в том что есть таблица со строками, цвет которых задается стилем.
надо чтобы цвет первой строки таблицы задавался в зависимости от цвета последующих строк при загрузке таблицы

вот пример таблицы:

<table onload=requred_func();>
<tr style=background-color:#00ff00><td>0000000000</td></tr>
<tr style=background-color:#00ff00><td>1111111111</td></tr>
<tr style=background-color:#00ff00><td>2222222222</td></tr>
<tr style=background-color:#ff0000><td>3333333333</td></tr>
<tr style=background-color:#00ff00><td>4444444444</td></tr>
<tr style=background-color:#00ff00><td>5555555555</td></tr>
</table>

т.е. надо чтобы просматривались строки со значением от 1 до 5 и в зависимости от их цвета выставлялся цвет для строки 0

вопрос куда копать....

Skipp 14.09.2010 10:07

а вы начните копать хотя бы куда-нибудь. Вы сами отвечаете на свой вопрос, проверяете значения у всех строк таблицы и исходя из их значения меняете значение определённой строки.

Я не вижу в этом проблемы.

И кстати значения атрибута пишут в кавычках, что бы не возникало никаких проблем.

slavazav 14.09.2010 10:31

вот что то накопал, тока что то не работает

function requred_func(obj){
for(var j=1;j<obj.childNodes.length;j++){

if(obj.childNodes[j].style.background-color=='#ff0000'){
obj.childNodes[1].style.background-color='#ff0000';
break;
}
else{
obj.childNodes[1].style.display='#00ff00';

}
}
}

<table onload=requred_func(this);>

ksa 14.09.2010 11:07

slavazav, как формируется табличка? Каким-то серверным языком?

slavazav 14.09.2010 11:11

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

Sweet 14.09.2010 11:19

slavazav, у тебя куча ошибок!!! Не нужно плакаться, научись находить ошибки сам. Иначе всю жизнь будешь на форум вопросы задавать. И так, ошибки:
Во-первых, не рекомендую использовать childNodes. Наплодишь ошибок, и к гадалке не ходи. Собственно, у тебя obj.childNodes вовсе не ведет на <tr>.
Во-вторых, стиль background-color в js пишется backgroundColor.
Что делать:
Переходи на
document.getElementsByTagName('tr')

И перебирать в цикле их.
И еще, не уверен, что onload на таблице - хорошая идея..

ksa 14.09.2010 11:30

Цитата:

Сообщение от slavazav
решил обрабатывать это на клиентской стороне

Очень сомнительное решение... :( На серверной СУБД гораздо удобнее обрабатывать данные, а клиенту выдавать уже готовый вариант.

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

Может таки передумаешь? :)

slavazav 14.09.2010 12:05

написал следующую функцию.

function requred_func(){
for(var i=0;i<document.getElementsByTagName('table').lengt h;i++){
for(var j=1;j<document.getElementsByTagName('table')[i].getElementsByTagName('tr').length;j++){
if(document.getElementsByTagName('table')[i].getElementsByTagName('tr')[j].style.backgroundColor=='#ff0000'){
document.getElementsByTagName('table')[i].getElementsByTagName('tr')[0].style.backgroundColor='#ff0000';
break;
}
else {
document.getElementsByTagName('table')[i].getElementsByTagName('tr')[0].style.backgroundColor='#00ff00';
}
}
}

}


но в FF она почему то не работает, хотя в IE все норм

slavazav 14.09.2010 12:14

ksa,
Цитата:

Сообщение от ksa
На серверной СУБД гораздо удобнее обрабатывать данные

СУБД нету. строки таблицы формируются в зависимости от поведения некоторой системы

Sweet 14.09.2010 12:41

slavazav, то, что ты делаешь - неправильно. Учти, в ie цвета - это #ff0000, а в ff - rgb(255, 0, 0). Соответственно, очевидно, что '#ff0000'!='rgb(255, 0, 0)'. Используй class, или еще что..


Часовой пояс GMT +3, время: 07:39.