Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как обратиться к таблице из ячейки (https://javascript.ru/forum/dom-window/24140-kak-obratitsya-k-tablice-iz-yachejjki.html)

simple 19.12.2011 01:10

как обратиться к таблице из ячейки
 
Всем привет. Например есть таблица
<table id="table" width="300px" height="200px">
 <tr>
  <td>...</td>
  <td>...</td>
  <td>...</td>
 </tr>
 <tr>
  <td>...</td>
  <td>...</td>
  <td>...</td>
 </tr>
 <tr>
  <td>...</td>
  <td>...</td>
  <td>...</td>
 </tr>
</table>


Мне нужно что бы при кликанье по любой ячейки можно было добраться до параметров таблицы,т.е в нашем случае до width и height ну и id.

вставляю в ячейки <td> следующий код
<td onclick="alert(this.parentNode.parentNode.id);">...</td>

alert выдает пустоту, как же добраться до основного родителя из ячейки?? :(

Aetae 19.12.2011 01:33

Ещё один parentNode вам поможет, ибо tbody.
Но по-хорошему надо просто сделать нужные переменные, чтоб не лезть каждый раз.

simple 19.12.2011 01:47

tbody помогло :)
спасибо

nerv_ 19.12.2011 21:28

Aetae, аха) Я сейчас тоже потихоньку перехожу к изученю объектной модели (DOM). По идее, немного странно, ведь тег <tbody> не упоминается при построении таблицы.

simple, может это пригодится Выделение строки и столбца относящихся к ячейке таблицы
<td onclick="alert(this.offsetParent.nodeName);">...</td>

simple 19.12.2011 22:48

nerv_ спасибо, красивый способ, все работает :)

simple 19.12.2011 22:53

У меня вот еще вопрос возник..написал функцию которая создает макет модального окна, некоторым элементам присваиваю id для дальнейшей обработки, например для resiza id="left" id="top" и.т.д. Если я создам этой функцией несколько окон то ничего страшного не будет если будут дублироваться id-ы. Так то пробовал все работает, ошибку вроде не выдает,(что удивительно ведь id должен быть уникальный) просто хотелось узнать может есть более правильный способ?

ksa 20.12.2011 09:28

Цитата:

Сообщение от simple
ведь id должен быть уникальный

Именно так. :yes:
Только поддерживать ту уникальность должен разработчик. ;)

Aetae 20.12.2011 10:47

Вообще конечно с id это фэил в первую очередь разрабов, а уж потом начинающих прогеров: отсутствие изначально способа группировки элементов.
Уникальный идентификатор есть, а групповго нет.
Есть name, но не для любого элемента.
Есть class, но во-первых не для того он придуман, во вторых - ie.

И приходится всем юзать class=(

simple 20.12.2011 13:37

решил тогда отказаться от id и добираться до нужных элементов с помощью ветвлений childNodes и parentNode..Но тут тоже без сюрпризов не обходиться, вот например таблица расположенная в теги <div>:
<div>
<table id="table">// obj.childNodes[1].id выведет "table"
 <thead id="thead">// obj.childNodes[1].childNodes[1].id выведет "thead"
  <tr>
   <th>...</th>
   <th>...</th>
   <th>...</th>
  </tr>
 </thead>
 <tbody id="tbody">//obj.childNodes[1].childNodes[2].id выведет "undefined"
????  
  <tr>// а вот obj.childNodes[1].childNodes[3].id покажет "tbody"
   <td>...</td>
   <td>...</td>
   <td>...</td>
  </tr>
 </tbody>
</table>
</div>

Собственно вопрос что находиться в obj.childNodes[1].childNodes[2].id ???
Почему такой перескок через цифру ведь по идеи tbody должна быть вторым ребенком у таблице?

ksa 20.12.2011 13:42

Цитата:

Сообщение от simple
ведь по идеи tbody должна быть вторым ребенком у таблице?

По чьей идее? :D

<table>
 <thead> ... </thead>
*!*
 <tfoot>
  <tr>
   <td> ... </td>
  </tr>
 </tfoot>
*/!*
 <tbody> ... </tbody>
</table>

http://htmlbook.ru/html/tfoot


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