Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Javascript + DOM (проблема)
 
 автор: Антоха   (06.02.2008 в 10:18)   письмо автору
 
 

Здраствуйте.
Вот только вчера первый раз познакомился с 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(domHtmltag); 

    
// Выводим результат
    
alert(tag);
  }

  function 
findNode(targettag) {
    
// Проверяем наличие (кол-во) потомков
    
for(var 0target.childNodes.lengthi++) {
      var 
domTag target.childNodes[i];
      var 
domTagText domTag.nodeName.toLowerCase();
      
// Проверяем если узел - ни текст и ни тег <script>,
      // чтобы не выводить свой же javascript-код
      
if((domTagText != '#text') && (domTagText != 'script')) {
        var 
atts "";
        for(var 
0domTag.attributes.lengthk++) {
          
// Если есть атрибуты, добавляем имя=значение
          
atts += " " domTag.attributes[k].nodeName 
               
"='" domTag.attributes[k].nodeValue "'";
        }
        
// Формируем тег
        
tag += "<" domTagText atts ">";
        
// Если есть потомки, вызываем рекурсию
        
if(domTag.childNodes.length 0) {
          
tag findNode(domTagtag);
        } 
        
// Завершаем тег
        
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 не работает, но для меня не это главное).

   
 
 автор: Crux   (06.02.2008 в 10:31)   письмо автору
 
   для: Антоха   (06.02.2008 в 10:18)
 

>document.write(tag) - ничего не выводит, пробовал и innerHTML - не помогает.

а Вы повнимательней почитайте про document.write и про innerHTML

   
 
 автор: Антоха   (06.02.2008 в 11:50)   письмо автору
 
   для: Crux   (06.02.2008 в 10:31)
 

Намёк понял - почитал - разобрался - все получилось.
Пасибо...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования