Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2008, 10:18
Новичок на форуме
Отправить личное сообщение для Root Посмотреть профиль Найти все сообщения от Root
 
Регистрация: 16.04.2008
Сообщений: 5

поменять цвет у нескольких строк в таблице
Необходимо написать функцию которая бы выделяла несколько определенных строк в таблице. То есть таблица, в ней во всех
<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'
		}
    }
};

данный код не работает... Может быть есть какое-то другое решение?
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2008, 11:51
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Цитата:
в нескольких строках может быть одинаковый id
не может быть!
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2008, 08:48
Новичок на форуме
Отправить личное сообщение для Root Посмотреть профиль Найти все сообщения от Root
 
Регистрация: 16.04.2008
Сообщений: 5

Сообщение от tenshi Посмотреть сообщение
не может быть!
Тогда подскажите какое-нибудь другое решение... просто я с Явой пока на ВЫ...
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2008, 17:35
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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 пока не кроссбраузерен.
Ответить с цитированием
  #5 (permalink)  
Старый 21.04.2008, 10:30
Новичок на форуме
Отправить личное сообщение для Root Посмотреть профиль Найти все сообщения от Root
 
Регистрация: 16.04.2008
Сообщений: 5

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


Опции темы Искать в теме
Искать в теме:

Расширенный поиск