узнать кол-во элементов в DOM из js

  • Автор темы Автор темы sni
  • Дата начала Дата начала

sni

Новичок
узнать кол-во элементов в DOM из js

День добрый. Есть HTML-страничка , в ней мы из js должны перебирать все элементы по определеным параметрам: (тэгу или ID).

не могу получить кол-во элементов.
вроде правильно пишу:

var te=document.getElementsByTagName("input");
num = te.childNodes.length;

не хочет.....

пробовал var tedit=document.getElementById("te");
тоже не пашет........

подскажите что не так?

и еще.....

tedit=document.getElementById("te");
num = te.childNodes.length; (или что-то в этом роде)
- такая конструкция имеет право на жизнь? ведь вроде как в документе,по хорошему, ID должен быть уникальным для каждого элемента?
 
kruglov мдя.... и не подумал. Спасибо!

а по поводу второго, более философского вопроса? правильно ли делать несколько элементов с одним ID. просто в 2х книгах противоположные прям мнения видел.....
 
sni, и в каком справочнике так учат?

P.S. Кстати, ту книгу, в которой учат использовать одинаковые ID, аккуратно отдели от обложки и отнеси в сортир -- пусть пользу приносит.
 
Кристиан Уэнц
JavaScript - карманный справочник.

Но в целом нормально все написано... купил изза размера - таскаю с собой до 5ти таких справочников и в электричках читаю....

кстати te.childNodes.length; - тоже оттуда подсмотрел....
 
P.S. Кстати, ту книгу, в которой учат использовать одинаковые ID, аккуратно отдели от обложки и отнеси в сортир -- пусть пользу приносит.
правильно,
но id одинаковые нужны иногда:))
 
tf
Ага, а иногда и кактусы для установки на мониторы нужны.

Стандарт запрещает иметь неуникальные ID.
Хотя MSIE возвращает массив и даже документирует это.
Не помню, правда, что он делает в strict-режиме.
 
в ие7 вообще нет различия меджу name и id. Проверил на собственном опыте.
 
ну да. при вызове getElementsByName возвращает как элементы с name так и с id, указанном в вызове
 
Автор оригинала: A-Lex[FM]
ну да. при вызове getElementsByName возвращает как элементы с name так и с id, указанном в вызове
Код:
<html>
  <head><title>Test</title>
  </head>
  <body>
    <p>Foo</p>
    <blockquote id="p">Bar</blockquote>
    <script>
    elements = document.getElementsByTagName('p');
    document.write(elements.length);
    </script>
  </body>
</html>

И как, единичка или двойка?
 
Crazy getElementsByName & getElementsByTagName несколько разные вещи...
в отличии от getElementById они возвращают масив элементов.
 
dimagolov, что у тебя пишет следующий код?

Код:
<html>
  <head><title>Test</title>
  </head>
  <body>
    <p>Foo</p>
    <blockquote id="p">Bar</blockquote>
    <script>
    elements = document.getElementsByName('p');
    document.write(elements.length);
    </script>
  </body>
</html>

Неужели 1?

P.S. ...а и верно -- IE (только он) вернул 1 вместо 0. Вывод: пользоваться этим вообще нельзя.
 
так ИЕ известен еще и тем, что создает переменные-ссылки на объекты одноименные с id объектов. то есть в твоем примере код
Код:
p.innerHTML = "AAAA";
будет менять абзац с квотированием.
 
Сверху