[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: DOM модель
kent666
Всем привет.
помогите разобраться. У меня есть скрипт который определяет количество тегов в документе.
head>
<script>
function
countTags(n) { // n – это Node
var numtags = 0; // Инициализируем счетчик тегов
if (n.nodeType == 1 /*Node.ELEMENT_NODE*/) // Проверяем, является ли n
// объектом Element

numtags++; // Если это так, увеличиваем счетчик
var children = n.childNodes; // Теперь получаем все дочерние элементы n
for(var i=0; i < children.length; i++) { // Цикл по всем дочерним элементам
numtags += countTags(children[i]); // Рекурсия по всем дочерним элементам
}
return numtags; // Возвращаем общее число тегов
}
</script>
</head>

<!-- Это пример использования функции countTags() -->
<body onload="alert('Количество тегов в документе: ' + countTags(document))">
Это <i>пример</i> документа.
</body>

В результате подсчетов выдается ответ что в документе 5 тегов! Хотя если присмотреться то их тут только 4!!! Объясните где он находит 5 тег



Спустя 49 минут, 19 секунд (17.10.2011 - 11:39) m4a1fox написал(а):
А какой тег не считает?

Спустя 2 минуты, 11 секунд (17.10.2011 - 11:41) kent666 написал(а):
да в том то и дело что он считает 5. Хотя их только 4!
<head>
<script>
<body>
<i>

Спустя 3 минуты, 10 секунд (17.10.2011 - 11:44) kent666 написал(а):
пытался вывести все теги которые он видит, но что то не получается.
<head>
<script>
function
countTags(n) { // n – это Node
var tag=document.getElementById("tag");
var f;
var numtags = 0; // Инициализируем счетчик тегов
if (n.nodeType == 1 /*Node.ELEMENT_NODE*/) // Проверяем, является ли n
f= n.tagName;
numtags++; // Если это так, увеличиваем счетчик
var children = n.childNodes; // Теперь получаем все дочерние элементы n
for(var i=0; i < children.length; i++) { // Цикл по всем дочерним элементам
numtags += countTags(children[i]); // Рекурсия по всем дочерним элементам
f = f + ", "+children[i].tagName;
}
tag.value = f;
return numtags; // Возвращаем общее число тегов
}
</script>
</head>
<body
onload="alert('Количество тегов в документе: ' + countTags(document))">
Это <i>пример</i> документа.
<div id="tag"></div>
</body>

Блок <div id="tag"></div> почему то пустой.

Спустя 23 минуты, 6 секунд (17.10.2011 - 12:07) redreem написал(а):
childNodes берет не теги, а узлы, к которым относятся также текста, не заключенные в теги.
к тому же разные браузеры по разному интерпретируют эти самые узлы.

Спустя 38 минут, 32 секунды (17.10.2011 - 12:46) caballero написал(а):
возьми jQuery и не страдай фигней

Спустя 1 день, 3 часа, 20 минут, 48 секунд (18.10.2011 - 16:07) pavel24071988 написал(а):
Дык сделай так

<head>
<script>
function
countTags(n) { // n – это Node
var numtags = 0; // Инициализируем счетчик тегов
if (n.nodeType == 1 /*Node.ELEMENT_NODE*/) // Проверяем, является ли n
// объектом Element

numtags++; // Если это так, увеличиваем счетчик
var children = n.childNodes; // Теперь получаем все дочерние элементы n
for(var i=0; i < children.length; i++) { // Цикл по всем дочерним элементам
numtags += countTags(children[i]); // Рекурсия по всем дочерним элементам
}
return (parseInt(numtags)-1); // Возвращаем общее число тегов
}
</script>
</head>

<!-- Это пример использования функции countTags() -->
<body onload="alert('Количество тегов в документе: ' + countTags(document))">
Это <i>пример</i> документа.
</body>



судя по твоему описанию проблемы должно заработать :)))))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.