Существует ещё один вариант работы с элементами - использование динамического HTML (DHTML),
расчитанный на поздние варианты браузеров. В иерархической объектной модели одну из важных ролей при доступе к объектам
играют два набора: all и children. В первом содержатся ссылки на все объекты, расположенные
ниже объекта в иерархии, тогда как второй содержит ссылки на все объекты, непосредственно порождаемые
данным объектом (иерархия !). На вершине всей иерархии объектов расположен объект document, от которого происходят, в
конечном итоге, все объекты, представляющие элементы HTML. Этот объект также имеет набор all (содержащий
ссылки на все объекты документа), который можно использовать для доступа к любому объекту страницы.
Оба набора можно использовать только при наличии у объектов атрибутов id="" и/или name
="". В этом случае обращение к контейнерам будет выглядеть так :
var nameC = document.all.contN;
var commC = document.all.contC;
А обращение к текстовым узлам (элементам) формы :
var nameE = document.all.myname.lastChild;
var commE = document.all.mycomm.lastChild;
Как видно из последних обращений - методы работы с DOM и DHTML- взаимозаменяемы.
Соответственно изменится и содержание функции :
<script language="javascript">
01 function getComment()
02 {
03 var nameE=document.all.myname.lastChild;
04 var commE=document.all.mycomm.lastChild;
05 var contEn=document.all.contN;
06 var contEc=document.all.contC;
07 contEn.appendChild(nameE);
08 contEc.appendChild(commE);
09 }
<script>
рис.10
Этот вариант обращений к узлам (элементам) - то-же не последний.
После того, как мы закончили с инструкцией для браузера,
необходимо подумать о том, как сохранить полученные контейнеры с отзывом. Этот отзыв не исчезнет, как
только в форму добавят новый отзыв - он просто присоседится в тот - же контейнер : имя к имени, а отзыв к отзыву.
Выглядит это - не очень... В PHP эта проблемма легко решаема при помощи цикла, который создаёт,
в том числе - и контейнеры, по заданному (CSS) образцу. Местоположение контейнеров с отзывами там
задаётся положением РНР - кода относительно <form>. Нечто подобное обеспечивает и JS. Мы не будем
усложнять и без того не лёгкую задачу и, выберем наиболее простой путь : создадим на страничке контейнер
<div id="comments"></div>, в который будут помещатся добавленные отзывы. Заполняя
форму, каждый посетитель создаёт два новых элемента : имя и отзыв (nameE и commE). При помощи JS - функции
мы будем создавать новые контейнеры для каждой пары, а затем добавлять их, как "дочерние"(иерархия !), в
контейнер "comment", который мы так-же создадим, вместе с контейнером для времени добавления отзыва. А
потом уже сам контейнер "comment" и контейнер с временем отзыва, мы добавим в созданный на страничке
контейнер "comments". Так мы получим цикл. дальше... ...назад