PHP+HTML+JavaScript. Ссылка на строки таблиц.

TsarAlex

Новичок
PHP+HTML+JavaScript. Ссылка на строки таблиц.

Задал мне дизайнер такое задание.
Таблица генерируется PHP-скриптом и может быть абсолютно произвольной.
При наведении мыши на строку таблицы - она должна загораться, да так что у соседних строк изменяется свойство border.
Строка таблицы:
<tr onmouseover="on_tr(this)" onmouseout="off_tr(this)">
Вот фнукции подсвечивающие
function on_tr(id){
for(i=0;i<4;i++)
on(id.cells);
}

function off_tr(id){
for(i=0;i<4;i++)
off(id.cells);
}

Дак вот в чем вопрос - как имея ссылку на определенную строку - "id" получить ссылку на предыдущую строку?
 

bars_g

Guest
neko
в принципе, имея id, получить индекс не большая проблема :)
 

jahson

Guest
Все братья и сестры данной ячейки принадлежат одной коллекции.
Итак действия:
1. Узнаешь парента (xxx.parentNode)
2. В цикле пробегаешь все ячейки, а те, nodeName которых == 'TD' соответственно мучаешь.

или как вариант:
Попробуй сделать подсветку для TR, который явственно является парентом любой ячейки описанной TD.

Подсветка - либо через xxx.className либо смотри все свойства объекта style (желательно w3c дозволенные и рекомендованные - такие точно везде есть).

-~{}~ 16.08.04 23:49:

И вообще поинтересуйся на zvon.org объектной моделью документа (dom).

-~{}~ 16.08.04 23:51:

Соответственно соседние строки - это родичи той самой TR которая парент для TD, а точнее их можно получить так:
xxx.parentNode.nextSibling
xxx.parentNode.previousSibling

оп-ля
 

Alexandre

PHPПенсионер
заменить на
PHP:
function on_tr( row , id )
дело все упростится

все строки табл генерить из пхп в циклу...

<tr onmouseover="on_tr( <? echo $rowNum ?>, id )" onmouseout="off_tr(<? echo $rowNum ?> ,id)">

все рабно табл генериться из пхп - я надеюсь ):

и придумывать ничего не надо
 

TsarAlex

Новичок
в принципе, имея id, получить индекс не большая проблема
Как?

Соответственно соседние строки - это родичи той самой TR которая парент для TD, а точнее их можно получить так:
xxx.parentNode.nextSibling
xxx.parentNode.previousSibling
Вот это именно то что мне надо. Только
xxx.parentNode
является ссылкой на таблицу. А вот
xxx.parentNode.nextSibling почему-то является null. Если бы решить эту проблему то у меня огромный груз с плеч свалится.

Пожайлуста подскажите как располагая только ссылкой на подсвечиваемую строку узнать ее номер в коллекции table_name.rows[] без циклов.


все строки табл генерить из пхп в циклу...
<tr onmouseover="on_tr( <? echo $rowNum ?>, id )" onmouseout="off_tr(<? echo $rowNum ?> ,id)">
все рабно табл генериться из пхп - я надеюсь ):
К сожалению нельзя. В PHP скриптах не должно быть ничего лишнего. Там и так много что должно быть наворочено.
 

jahson

Guest
Значит дерево таблицы выглядит наверное так:
table
tr
td
td
tr
Хотя лучше уточнить.
Забудь ты про table_name.rows[]
Если дерево будет таким, то не нужен будет цикл. Пара проверок, и все.
Завтра отпишусь.

-~{}~ 19.08.04 11:55:

Значится так.
Дерево такое:
TABLE
-TBODY
--TR
---TD
Делаешь ID у таблицы, на body onload ставишь функцию init(id) которая по id таблицы навешивает на все ячейки обработчики onmouseover (или может лучше вешать на TR?).
А уж в onmouseover твори что хочешь.
 

TsarAlex

Новичок
jahson - это же гениально!
Только вешать надо не события onmouse, ибо они у всех одинаковые. А надо присваивать ID строкам.
В результате получается мы это дело переваливаем на браузер пользователя. А так как таблица не мега-большая, то тормозов не будет.
 

jahson

Guest
Ибо одинаковые, да.
Но ведь у тебя эффект от наведения тоже одинаковый?
Соответственно при наведении берешь previousSibling и nextSibling того TR, в котором находится ячейка.
И не забудь попробовать без ячеек - просто по TR. Тогда вообще упростится скрипт - только не забудь проверку .nodeName.
 
Сверху