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

HTML+CSS+JavaScript

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

 

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

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

тема: лишние текстовые узлы
 
 автор: btr   (01.02.2013 в 23:26)   письмо автору
 
 

Здравствуйте.


<div id="bd03">
      <div id="a4575_v" class="a_node" onclick="a_onClick(this.id)">
      <p> jjj </p>
      <img ....>
      </div>
      <div id="a4570_v" class="a_node" onclick="a_onClick(this.id)">
      <p> jjj </p>
      <img ....>
      </div>
      <div id="a4569_v" class="a_node" onclick="a_onClick(this.id)">
      <p> jjj </p>
      <img ....>
      </div>
</div>


function B_onLoad() {
  var e = document.getElementById('bd03');
  e.normalize();
  e_ch = e.childNodes;
  for (var i = 0; i < e_ch.length; i++) {
    alert(e_ch[i]);
  }
}

выводит
[object Text]
[object HTMLDivElement]
[object Text]
[object HTMLDivElement]
[object Text]
[object HTMLDivElement]
[object Text]


вопрос: откуда текстовые узлы?? :О
и вроде бы e.normalize(); должно пустые текстовые узлы удалять?

  Ответить  
 
 автор: ЯСА   (02.02.2013 в 00:18)   письмо автору
 
   для: btr   (01.02.2013 в 23:26)
 

метод ТЕГ.normalize () - он ничего не удаляет

он как бы "сериализует" написанный вами HTML-код внутри ТЕГА
преобразуя его в тот вид, который бы вам вернул ТЕГ.innerHTML
например,
напишете вы в коде

<SpAn>&#169;&#151;&#160;</sPaN>
 
браузер FireFox изменит это дело на

<span>©—&nbsp;</span>

т.е. сделает одинаковым нижним регистр для тегов,
копирайт и длинное тире преобразует из ASCII-кодов в символы,
а ASCII-код символа неразрывного пробела изменит на мнемоническое имя

[а другие браузеры - как-нить по-другому сделают, ибо стандарта для сериализации HTML-кода не существует]

вместо ТЕГ.normalize () с тем же КОНЕЧНЫМ результатом можно написать ТЕГ.innerHTML = ТЕГ.innerHTML;

однако, такая запись - она много медленнее исполнится, чем ТЕГ.normalize (),
потому что будут перезагружены все объекты (браузер заново "потянет" с сервера картинки; вернет начальные значения полям ввода, которые юзер уже мог изменить...)
-------

что до текстовых нод, то от них вы сможете избавиться,
прописав свой HTML-код следующим образом:
<div id="bd03"
><div id="a4575_v" class="a_node" onclick="a_onClick(this.id)">
      <p> jjj </p>
      <img ....>
      </div
><div id="a4570_v" class="a_node" onclick="a_onClick(this.id)">
      <p> jjj </p>
      <img ....>
      </div
><div id="a4569_v" class="a_node" onclick="a_onClick(this.id)">
      <p> jjj </p>
      <img ....>
      </div
></div>


либо вместо e.childNodes используйте коллекцию e.children - последняя возвращает только HTML-элементы

  Ответить  
 
 автор: btr   (02.02.2013 в 12:01)   письмо автору
 
   для: ЯСА   (02.02.2013 в 00:18)
 

большое спасибо

  Ответить  
Rambler's Top100
вверх

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