Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   поменять цвет у нескольких строк в таблице (https://javascript.ru/forum/dom-window/1159-pomenyat-cvet-u-neskolkikh-strok-v-tablice.html)

Root 16.04.2008 10:18

поменять цвет у нескольких строк в таблице
 
Необходимо написать функцию которая бы выделяла несколько определенных строк в таблице. То есть таблица, в ней во всех
<tr id="num1">
свои id, при этом в нескольких строках может быть одинаковый id. Нужна функция
sel(id)
, которая бы меняла цвет фона строк на определенный другой, а при повторном вызове меняла цвет фона обратно, причем на тот цвет, который был до первой смены...

function sel(id){
	var table=document.getElementById('table1').childNodes;
	for(var i=0; i<table.length; i++) {
        var str = table[i]
		if (str.id == id) {
		str.className = 'actstr'
		}
    }
};

данный код не работает... Может быть есть какое-то другое решение?

tenshi 16.04.2008 11:51

Цитата:

в нескольких строках может быть одинаковый id
не может быть!

Root 17.04.2008 08:48

Цитата:

Сообщение от tenshi (Сообщение 1999)
не может быть!

Тогда подскажите какое-нибудь другое решение... просто я с Явой пока на ВЫ...

Dmitry A. Soshnikov 17.04.2008 17:35

Root, для группировки строк по определенному признаку, не обязательно использовать атрибут id, вполне подойдет любой другой (напрмер, blabla="true"). Дальше,

- берешь таблицу по id
- получаешь коллекцию строк (свойство rows - var rows = document.getElementById('table1').rows;, а не childNodes)
- проходишься циклом по этому массиву, анализируешься наличие своего атрибута blabla (if rows[k].getAttribute('blabla') == true { ... }) и подменяешь className;

P.S.: надо сказать, XPath'ом это решалось бы, наверно, быстрей - можно сразу получить все строки таблицы с заданым атрибутом (но пройтись циклом (для смены className'a) все равно потом пришлось бы - но зато кол-во итераций было бы меньше и проверки условия в цикле бы не было), но XPath пока не кроссбраузерен.

Root 21.04.2008 10:30

Огромное спасибо за исчерпывающий ответ!!!!


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