Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   DOM модель подсчет тегов документа (https://javascript.ru/forum/events/22375-dom-model-podschet-tegov-dokumenta.html)

kent666 17.10.2011 12:07

DOM модель подсчет тегов документа
 
Всем привет.
помогите разобраться. У меня есть скрипт который определяет количество тегов в документе.
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 тег

ksa 17.10.2011 12:12

Цитата:

Сообщение от kent666
Объясните где он находит 5 тег

Выведи все tagName объектов и увидишь...

kent666 17.10.2011 12:28

что то не получается.
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
		// объектом Element
		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>
<!-- Это пример использования функции countTags() -->
<body onload="alert('Количество тегов в документе: ' + countTags(document))">
	Это <i>пример</i> документа.
	<div id="tag"></div>
</body>

не работает

Kolyaj 17.10.2011 13:16

Цитата:

Сообщение от kent666
У меня есть скрипт который определяет количество тегов в документе.

alert(document.getElementsByTagName('*').length);

ksa 17.10.2011 21:51

Цитата:

Сообщение от kent666
что то не получается.

Да куда уже проще...

alert(document.getElementsByTagName('*')[0].tagName);


Часовой пояс GMT +3, время: 14:41.