Как я могу определить каждый элемент в DOM и порядок элементов?

0

Я хочу, чтобы иметь возможность ссылаться на любой элемент в HTML DOM, а также знать, в каком порядке элементы появляются. Я надеюсь, что элементы в DOM будут индексироваться где-то от 0 до <number-of-elements-minus-1>, поэтому что я могу идентифицировать определенные элементы и, отдельно, перечислять эти элементы в том порядке, в котором они появляются в HTML.

Например, в этом HTML элементы будут пронумерованы от 0 для элемента html, до 9 для второго элемента p:

<html lang="en-US">
<head>
    <title>Element 2. Page title</title>
</head>
<body>
    <h1 id="mainHead">Element 4. How to uniquely identify/order DOM elements</h1>
    <div id="boxedContent">
        <p class="smallText">Element 6. I want to be able to <span class="stress">7. uniquely</span> identify each element and <i>8. also</i> determine the order in which elements appear, reading from top to bottom through the HTML.</p>
    </div>
    <p>Element 9</p>
</body>
</html>

Я хочу, чтобы JavaScript/jQuery указывал, например, элемент title, first p element и span. HTML-страницы, с которыми я буду работать, не мои, но если есть индекс элемента DOM, который я могу получить, я мог бы получить эти 3 элемента, используя эти индексы ref, т.е.

  • название: 2
  • первый p: 6
  • span: 7

Номера индексов позволят мне привести список в порядок.

Это возможно? Как мне это сделать?

  • 0
    $('selector').index('*') ??? api.jquery.com/index
  • 0
    Это дает индекс относительно родственных элементов $ ('selector'). Я ищу индекс всех элементов, прямо через DOM сверху вниз.
Показать ещё 1 комментарий
Теги:
dom

1 ответ

0
Лучший ответ

Вы могли бы сделать что-то вроде этого:

var elems = document.getElementsByTagName('*');

Это создаст массивный объект всего элемента DOM.

Затем есть много способов получить индекс определенного элемента в этом объекте, подобном массиву.

Вы можете сделать это:

var indexOfTitle = elems.indexOf(document.getElementsByTagName('TITLE'));

Или вы можете создать цикл for который циклически elems по всем элементам в elems переменной elems и использует свойство like tagName для его поиска и т.д.

  • 0
    Спасибо Джош, это именно то, что я искал. Как в: var elems = document.getElementsByTagName ('*'); оповещение (elems [9] .outerHTML);
  • 0
    @AlistairChristie Я до сих пор не понимаю, почему вы не хотите использовать метод jQuery index() . Проверьте здесь: jsfiddle.net/Zw5ga РЕДАКТИРОВАТЬ: упс, похоже, что вы хотите нацелить элемент, используя его индекс, мой плохой, не по теме jsfiddle. См. Соответствующий jsFiddle: jsfiddle.net/Zw5ga/1 Использование в качестве селектора: $('*:eq(9)')
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню