Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать по элементу его номер в коллекции children 
:(
    Опции темы
Се_ля_ви
Дата 2.6.2004, 15:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди! Мне необходим способ узнать по элементу его номер по счёту в коллекции children родительского по отн. к нему элемента. Проблема в том, что таких элементов масса и каждый из них может не обладать какими-либо идентифицирующими их свойствами, содержанием или их комбинацией - т.е. вариант считать какие-то параметры этого тега и перебором найти в коллекции children родителя такой элемент и типа его номер и будет искомый не пройдут. Так же не подходит вариант пробегаться по всем элементам при их загрузке и задавать им идентификатор в зависимости от их номера - потому что это очень сильно затормозит комп - элементов очень много.

Это таблица огромного размера клик на каждой ячейке которой должен выполнять определённое действие, зависящее от того, в каком столбце и строке эта ячейка находится, тоесть по элементу td нужно узнать номер ячейки в строке, и для td.parentElement (т.е. тег tr) узнать какой он по счёту в теге tbody.

В описании DOM`а level 1 я таких методов не нашёл... возможно, плохо искал... Может быть, можно как-то извратиться?.. Необходимо чтобы работало в IE хотя бы начиная с версии 5.0 на wind`е, поэтому устроют специфичные для него методы и приёмы, хотя в идеале хотелось бы более универсальный приём...

Спасибо.
  Вверх
Sardar
Дата 2.6.2004, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ощущение плохо спроектированной программы...
При вызове обработчика из события не плохо бы передавать ему this аргументом. Перебором:
Код
for(var i=0,n=0; i<this.parentElement.childNodes.length; i++) {
if(this.parentElement.childNodes[i].nodeName=='TD') {
  if(this.parentElement.childNodes[i]==this) break;
  else n++;
}
}// в n лежит номер столбца

Также ищем tr в tBodies...
Цитата
Это таблица огромного размера клик на каждой ячейке которой должен выполнять определённое действие, зависящее от того, в каком столбце и строке эта ячейка находится, тоесть по элементу td нужно узнать номер ячейки в строке, и для td.parentElement (т.е. тег tr) узнать какой он по счёту в теге tbody.

Действия наверное не на switch'e поставленны... Если просто передаем данные, то вообще надо логику менять...

Почему так "запущенно" ? smile.gif


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
mix
Дата 2.6.2004, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.2.2003

Репутация: нет
Всего: 1



2 Се_ля_ви
ИА начиная с версии 4 обзавёлся свойством
cellIndex (у TD or TH) и
rowIndex(У TR)(правда оно вам не подойдёт так как обозначает индекс
внутри Table а не Tbody)
Для справки: обратится к и-той ячеке жи-того столбца можно так
Код

Otable.rows[j].cells[i]//Otable - таблица

Для определения индекса TR в Tbody

//mytr - искомая TR
var trs=mytr.parentElement.rows;//ячейки в Tbody
for(var i=0; trs[i]!=mytd; i++) {}//считаем что mytr всегда есть в коллекции trs
//i это и есть ваш индекс

ЗЫ Я искрене надеюсь
что в вашем HTML коде таблицы(особенно если она огромная) НЕ прописаны обработчики событий
как тут
Код

....
<tr>
<td onclick="doclick()"> ....1</td> <td onclick="doclick()"> ....2</td>  <td onclick="doclick()"> ....3</td>
</tr>
.....

(это надо делать из скрипта)



PM MAIL   Вверх
Се_ля_ви
Дата 2.6.2004, 21:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди, спасибо огромное!

Нет, событие я собираюсь прописать для всего документа вцелом (в теге body) и отсекать если
Код
event.srcElement.tagName != 'td'
.

Это просто огромедный прайс, который выкладывается в виде таблицы и есть форма оформления заказа по этому прайсу - и возникла идея: чем морочить нород запоминать и потом вбивать данные лучше обработать клики на ячейках и передавать эти данные в форму для заполнения изначально параметры в соответствии с выбраным пунктом прайса. Типа это проще людям чем вбивать руками или выбирать из выпадающего списка.

Как сделаю - если хотите, дам ссылку. :-)

Всё для удобства пользователей. Даже такие извраты :-)))
  Вверх
Sardar
Дата 2.6.2004, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Всё для удобства пользователей. Даже такие извраты :-)))

Это не извраты, а наоборот удобство для пользователя. Давай ссылку, пожуем на досуге, недели через 2... smile.gif



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.