<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"  href="/xslt/final.xslt"?><html>
  <head>
    <title>12.2 ExtJS — манипуляции с узлами DOM. добавление, удаление узлов и т.п.</title>
    <meta name="css" content="/doc/ext/ext_examples.css"/>
    <meta name="js" content="/js/EXT4/ext-all.js;/doc/ext/165.js"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="id" content="65"/>
    <link rel="stylesheet" type="text/css" href="/doc/ext/ext_examples.css"/>
    <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml"/>
  </head>
  <body>
    <div class="main">
      <div class="wrap">
        <div class="L">
          <h1><a href="/">..</a> / 12.2 ExtJS — манипуляции с узлами DOM. добавление, удаление узлов и т.п.</h1>
          <ol class="tags big">
            <li>
              <a href="/ExtJS-4">ExtJS-4</a>
            </li>
          </ol>
          <div class="myContent"><h2>
   1. Изменение содержимого узла
</h2>
<div id="ex1" class="domexample">
  #ex1
</div>
<pre class="brush: js">
Ext.get('ex1').update('&lt;b&gt;UPDATE&lt;/b&gt;'); // изменение innerHTML

</pre>
<h2>
   2. Добавление узла
</h2>
<p>
  <strong>2.1</strong> Этот метод раньше уже использовался в
  примерах. Повторю:
</p>
<div id="ex21A" class="domexample"/>
<pre class="brush: js">
 Ext.get('ex21A').createChild('&lt;div class=«domexample»&gt;createChild #ex21A&lt;/div&gt;');
</pre>
<p>
  <strong>2.2.</strong> HTML для createChild можно задавать
  непосредственно строкой, как сделано выше, а можно по-другому.
  см. примеры:
</p>
<pre class="brush: js">
Ext.get('ex21B').createChild({ // вставка в #ex21B элемента DIV
         tag:'div',             // тег, который нужно вставить
     id: 'ex21Another', // ID этого тега
         cls:'domexample',      // CSS-класс
         html:'&lt;b&gt;Another create method&lt;/b&gt;'  // html-содержимое
         });
 
</pre>
<div id="ex21B" class="domexample"/>
<pre class="brush: js">
Ext.get('ex21C').createChild({ // вставка в #ex21C списка UL
         tag:'ul',              // тег, который нужно вставить
         children: [       // дочерние елементы
                        {tag: 'li', id: 'item0', html: 'List Item 0'},
                        {tag: 'li', id: 'item1', html: 'List Item 1'},
                        {tag: 'li', id: 'item2', html: 'List Item 2'}
                ]
         });
</pre>
<div id="ex21C" class="domexample" style="margin-bottom:1em;">
</div>
<p>
  Этот метод пересекается с темой шаблонов в ExtJS и я его буду
  рассматривать дополнительно в отдельной части. Но здесь
  необходимо отметить отдельный класс <u class="external" title="docs.sencha.com/ext-js/4-0/#%21/api/Ext.DomHelper">Ext.DomHelper</u>,
  в котором присутствуют аналогичные методы
</p>
<p>
  <strong>2.2</strong> еще один пример. Добавление через
  Element.appendChild
</p>
<div id="ex22" class="domexample">
  #ex22
</div>
<pre class="brush: js">
var el = new Ext.Element(document.createElement('b')); el.update('appendChild'); // изменение innerHTML Ext.get('ex22').appendChild(el); 
</pre>
<p>
  Вообще-то если верить <u class="external" title="docs.sencha.com/ext-js/4-0/#%21/api/Ext.Element-method-appendChild">
  документации</u>, в первой строке можно задать фрагмент HTML, но
  увы, не заработало.
</p>
<p>
  <strong>2.3</strong> Добавлять элементы можно с помощью знакомых
  по jQuery команд insertAfter и insertBefore. Ниже вместо
  добавления я просто переортирую три расроложенных последовательно
  div 
</p>
<div id="ex23A" class="domexample">
  #ex23A
</div>
<div id="ex23B" class="domexample">
  #ex23B
</div>
<div id="ex23C" class="domexample">
  #ex23C
</div>
<pre class="brush: js">
var ex23A=Ext.get('ex23A');
var ex23B=Ext.get('ex23B');
var ex23C=Ext.get('ex23C');
ex23A.insertAfter(ex23C);
ex23B.insertBefore('ex23A');
</pre>
<h2>
   3. Удаление узла
</h2>
<pre class="brush: js">
Ext.get('example').remove();
</pre>
<p>
  Здесь все просто. Удаление Ext.Element кроме удаления
  DOM-элемента сопровождается очисткой всего что с ним связано, в
  том числе событий.
</p>
<h2>
   4. И еще
</h2>
<p>
  И еще в Ext предусмотрена еще куча беспонтовых методов
  манипуляции с DOM (insertFirst, insertSibling,
  replace,insertHtml,wrap…). Их можно разглядеть <u class="external" title="docs.sencha.com/ext-js/4-0/source/Element.insertion.html#Ext-Element-method-replace">
  в исходниках</u>
</p>
<h2>
  Далее
</h2>
<ol>
  <li>
    <a href="/66.htm">Шаблоны в ExtJS.</a>
  </li>
  <li>
    <a href="/67.htm">События в ExtJS</a>
  </li>
</ol></div>
          <ol class="tags big">
            <li class="date">2011-12-11</li>
            <li>
              <a href="/ExtJS-4">ExtJS-4</a>
            </li>
          </ol>
          <ol class="see">
            <li>
              <a href="#"><span>docs.sencha.com/ext-js/4-0/#!/api/Ext.DomHelper</span> - <b>Ext.DomHelper</b></a>
            </li>
          </ol>
          <ul class="comment"/>
        </div>
      </div>
      <div class="R">
        <a href="/" title="&#x41D;&#x430; &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x443;&#x44E;"/>
      </div>
    </div>
    <div id="li"/>
  </body>
</html>

