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

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 должен быть уникальным для каждого элемента?
 

sni

Новичок
kruglov мдя.... и не подумал. Спасибо!

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

Crazy

Developer
sni, и в каком справочнике так учат?

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

sni

Новичок
Кристиан Уэнц
JavaScript - карманный справочник.

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

кстати te.childNodes.length; - тоже оттуда подсмотрел....
 

tf

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

kruglov

Новичок
tf
Ага, а иногда и кактусы для установки на мониторы нужны.

Стандарт запрещает иметь неуникальные ID.
Хотя MSIE возвращает массив и даже документирует это.
Не помню, правда, что он делает в strict-режиме.
 

A-Lex[FM]

Web/Highload/DataScience
в ие7 вообще нет различия меджу name и id. Проверил на собственном опыте.
 

A-Lex[FM]

Web/Highload/DataScience
ну да. при вызове getElementsByName возвращает как элементы с name так и с id, указанном в вызове
 

Crazy

Developer
Автор оригинала: 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>
И как, единичка или двойка?
 

dimagolov

Новичок
Crazy getElementsByName & getElementsByTagName несколько разные вещи...
в отличии от getElementById они возвращают масив элементов.
 

Crazy

Developer
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. Вывод: пользоваться этим вообще нельзя.
 

dimagolov

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