помогите разобраться. У меня есть скрипт который определяет количество тегов в документе.
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>
<head>
<script>
<body>
<i>
Спустя 3 минуты, 10 секунд (17.10.2011 - 11:44) kent666 написал(а):
пытался вывести все теги которые он видит, но что то не получается.
Блок <div id="tag"></div> почему то пустой.
<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>
судя по твоему описанию проблемы должно заработать :)))))