Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подобраться к элементу (https://javascript.ru/forum/events/11789-podobratsya-k-ehlementu.html)

сiparis 13.09.2010 20:10

Подобраться к элементу
 
Обращение к элементу в стиле jQuery

Есть такая конструкция:
<table id="table">
  <tr>
     <td>
        <table>
              <tr>
                   <td>СЮДА!</td>
              </tr>
        <table>
     </td>
  <tr>
<table>


в jQuery чтобы обратиться к определенному элементу TD с таким уровнем вложенности можно так: $('#table table td:eq(0)');

А как на чистом JavaScript подобраться?

Так только до родительского элемента TD получается дойти, а как до самого TD подобраться?
var tb = document.getElementById('table').getElementsByTagName('table');
for(i=0; i<tb.length; i++){
    alert(tb[i]); // тут в цикле все элементы table, а как дальше пойти по вложенности?
}

subzey 13.09.2010 20:42

document.getElementById("#table").getElementsByTagName("table")[0].getElementsByTagName("td")[0]

Учтите только, что если промежуточных элементов не будет в документе, этот кусок кода выкинет ошибку.

Sweet 13.09.2010 20:51

В таком случае все зависит от фантазии:)
<table id="table">
  <tr>
     <td>
        <table>
              <tr>
                   <td>СЮДА!</td>
              </tr>
        <table>
     </td>
  <tr>
<table>
<script>
alert(document.getElementById('table').children[0].children[0].children[0].children[0].children[0].children[0].children[0].innerHTML)
var tds = document.getElementsByTagName('td')
for(var i = 0, length = tds.length; i < length; i++) if(tds[i].parentNode.parentNode.parentNode.parentNode.tagName == 'TD') alert(tds[i].innerHTML)
</script>

сiparis 13.09.2010 21:32

Cпасибо, а как jQuery удалось так $('#table table td:eq(0)'); изящно организовать доступ к элементам?
Если не сложно объясните.

Sweet 13.09.2010 22:00

Цитата:

Сообщение от сiparis
а как jQuery удалось так $('#table table td:eq(0)');

Я лично не вижу разницы с вариантом subzey.
#table - это .getElementById("#table")
table - это getElementsByTagName("table")[0]
td:eq(0) - это .getElementsByTagName("td")[0]


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