|
|
|
| Здраствуйте.
Вот только вчера первый раз познакомился с DOM и седня решил попрактиковать, задал себе простенькую задачку - пробежаться по всем узлам и вывести результат. Что-то типа, как в браузере делаешь просмотр html-кода.
Допустим, у меня такая страничка с самим яваскриптом
<html>
<head>
<title>Заголовок</title>
<script language="JavaScript">
<?php \\ - Чтобы лучше было видно
function startDom() {
var tag = ""; // Здесь будет результат всех тегов
// Не большая проверка на всякий случай
var domHtml = document.documentElement;
if(domHtml == null
|| domHtml.childNodes.length != 2
|| domHtml.childNodes[0].nodeName.toLowerCase() != 'head'
|| domHtml.childNodes[1].nodeName.toLowerCase() != 'body') {
alert('Структура документа неверна!');
return false;
}
// Все хорошо, вызываем функцию
tag += findNode(domHtml, tag);
// Выводим результат
alert(tag);
}
function findNode(target, tag) {
// Проверяем наличие (кол-во) потомков
for(var i = 0; i < target.childNodes.length; i++) {
var domTag = target.childNodes[i];
var domTagText = domTag.nodeName.toLowerCase();
// Проверяем если узел - ни текст и ни тег <script>,
// чтобы не выводить свой же javascript-код
if((domTagText != '#text') && (domTagText != 'script')) {
var atts = "";
for(var k = 0; k < domTag.attributes.length; k++) {
// Если есть атрибуты, добавляем имя=значение
atts += " " + domTag.attributes[k].nodeName
+ "='" + domTag.attributes[k].nodeValue + "'";
}
// Формируем тег
tag += "<" + domTagText + atts + ">";
// Если есть потомки, вызываем рекурсию
if(domTag.childNodes.length > 0) {
tag = findNode(domTag, tag);
}
// Завершаем тег
tag += "</" + domTagText + ">";
} else {
// Добавляем текст тега
if(domTag.nodeValue != null) {
tag += domTag.nodeValue;
}
}
}
return tag;
}
?>
</script>
</head>
<body>
<div id='newdiv'></div>
<p id='new' name='noname'></p>
<p id='old' name='unknow'></p>
<div><ul><li><li></ul></div>
<form><input type='button' name='but' onClick="startDom()" value='ok'></form>
</body>
</html>
|
Скрипт пробегается по всем узлам, заносит их в переменную tag и в конце должен выдать результат.
Вот только проблема, когда выводишь alert(tag) - всё нормально, а вот, например, document.write(tag) - ничего не выводит, пробовал и innerHTML - не помогает.
Я плохо знаю javascript, скорее всего ошибка в нем. Подскажите пожалуйста, что не так в этом javascript-коде.
З.Ы (еще правда в IE не работает, но для меня не это главное). | |
|
|
|
|
|
|
|
для: Антоха
(06.02.2008 в 10:18)
| | >document.write(tag) - ничего не выводит, пробовал и innerHTML - не помогает.
а Вы повнимательней почитайте про document.write и про innerHTML | |
|
|
|
|
|
|
|
для: Crux
(06.02.2008 в 10:31)
| | Намёк понял - почитал - разобрался - все получилось.
Пасибо... | |
|
|
|