JavaScript基礎(chǔ) DOM對象3 增馆匿、刪

創(chuàng)建元素節(jié)點(diǎn)
document.createElement( '節(jié)點(diǎn)名' );

var oA = document.createElement( 'a' ); //這里創(chuàng)建一個元素節(jié)點(diǎn)存放在內(nèi)存中鳍刷,還沒放進(jìn)DOM樹

增:
父級.appendChild( 新子節(jié)點(diǎn) ) 父級的最后一個添加一個節(jié)點(diǎn)

var oA = document.createElement( 'a' );
oBox.appendChild( oA );

向父級的最后一個添加一個節(jié)點(diǎn)


image.png

添加內(nèi)容

       <script type="text/javascript">
        var oBox = document.getElementsByClassName('box')[0];
        var oA = document.createElement('a');
        oA.innerHTML ='我是a標(biāo)簽';//往oA里添加內(nèi)容
        oA.;

        注意:在寫入DOM樹之前把標(biāo)簽屬性內(nèi)容先設(shè)置好忽你,再寫入蔗牡,這樣HTML只繪制一次
        oBox.appendChild(oA);
        console.log( oA );
    </script>

父級.insertBefore( 新節(jié)點(diǎn)宗侦,當(dāng)前某一個子節(jié)點(diǎn))
往第二個參數(shù)的子節(jié)點(diǎn)前愚臀,添加新節(jié)點(diǎn)

<script>
  var oBox = document.getElementsByClassName( 'box' )[0];
  var oA = document.createElement( 'a' );
  oBox.insertBefore( oA  , oBox.chilren[1]  );
</script>
image.png

如果父級沒有子元素的時候

 <div class="box"></div>
    <script type="text/javascript">
        var oBox = document.getElementsByClassName('box')[0];
        var oA = document.createElement('a');
        oA.innerHTML ='我是a標(biāo)簽';//往oA里添加內(nèi)容
        oA.;
        oBox.insertBefore( oA , oBox.children[1] );
    </script>

也可以正常添加,不用在乎子節(jié)點(diǎn)有沒有存在這樣寫都可以在第一個添加

特殊圖片添加

var oImg = new Image();
oImg.src = '1.jpg';//添加路徑
oDiv.appendChild( oImg );

children動態(tài)獲取

<body>
    <div class="box"></div>
    <script type="text/javascript">
        var oBox = document.getElementsByClassName('box')[0];
        var boxChild = oBox.children; //獲取oBox下的子元素矾利,存放在boxChild
        oA.innerHTML ='我是a標(biāo)簽';//往oA里添加內(nèi)容
        oA.;
        oBox.insertBefore( oA , boxChild[0] );//往boxChild的第一個前寫入oA
        console.log( boxChild[0]); //打印出第一個
    </script>
</body>
image.png

說明children是動態(tài)屬性姑裂;

createTextNode創(chuàng)建文本節(jié)點(diǎn)

var oDiv = document.getElementsByTagName( 'div' )[0];
var oTxt = document.createTextNode( '我是文本節(jié)點(diǎn)' );
oDiv.appendChild( oTxt );
image.png

createDocumentFragment()創(chuàng)建的是文檔碎片、整合多個碎片中介

<body>
    <div></div>
  <script>
       var oDiv = document.getElmentsBytagName( 'div' )[0],
             oA = document.createElement( 'a' ),
             oP = document.createElement( 'p' ),
             oTxt = document.createTextNode( '這是文本節(jié)點(diǎn)' ),
             obj = document.createDocumentFragment();//創(chuàng)建文檔碎片
             oA.innerHTML = '我是a標(biāo)簽';
             oP.innerHTML = '我是p標(biāo)簽';

             oDiv.appendChild( oA );
             oDiv.appendChild( oP );
             oDiv.appendChild( oTxt );
              用這種方法頁面會重繪三次

             obj.appendChild( oA );
             obj.appendChild( oP );
             obj.appendChild( oTxt );
             創(chuàng)建文檔碎片 把上面要寫入的放到obj里
             oDiv.appendChild( obj );
            統(tǒng)一放到oDiv里梦皮,頁面只繪制一次
  </script>
</body>

父級.removeChild( 子節(jié)點(diǎn) ) 刪除子節(jié)點(diǎn)

<body>
    <div class="wrap1">
        <div class="wrap">
            <div class="box">
                <p>你好的</p>
                <a href="">我是A標(biāo)簽</a>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        var oBox = document.getElementsByClassName( 'box' )[0];
        console.log( oBox );
        oBox.removeChild( oBox.children[1]);//刪掉a標(biāo)簽
    </script>
</body>

注意:只能通過父級才能殺掉子節(jié)點(diǎn)炭分;
如果要自己刪自己只有找到父級,再來刪掉

<body>
    <div class="wrap1">
        <div class="wrap">
            <div class="box">
                <p>你好的</p>
                <a href="">我是A標(biāo)簽</a>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        var oBox = document.getElementsByClassName( 'box' )[0];


        var x = oBox.parentNode.removeChild( oBox );
      //oBox.parentNode先找到父級再來刪掉removeChild( oBox )

      console.log( oBox ) //打印出上面獲取的
    </script>
</body>

oBox.parentNode.removeChild( oBox );
oBox.parentNode先找到父級再來刪掉removeChild( oBox )
console.log( oBox ) //打印出上面獲取的
說明:oBox還在剑肯!存放在內(nèi)存里捧毛,沒有被刪掉

replaceChild()替換
父級.replaceChild( 哪個要替換 , 替換的對象 )

    <ul>
        <li>123</li>
    </ul>
    <script type="text/javascript">
        var oUl = document.getElementsByTagName('ul')[0];
        var oLi = document.createElement('li');
            oLi.innerHTML = '你好明天';
        oUl.replaceChild( oLi,oUl.children[0] );

克隆cloneNode()

1让网、cloneNode( true ) 克隆元素下的所有內(nèi)容
2呀忧、cloneNode( false ) 只克隆標(biāo)簽 (默認(rèn))
true只有克隆標(biāo)簽里行內(nèi)樣式,行內(nèi)事件
js里定義事件 屬性都沒辦法克隆

    <div>你昌好的是歸了的是進(jìn)
        <p>你好</p>
    </div>
    <script type="text/javascript">
        var oDiv = document.getElementsByTagName('div')[0],
              oDiv.erguo = '2214'; //js里自定義屬性克隆不了
        var oAll = oDiv.cloneNode( true );
        console.log( oAll );
    <div>你昌好的是歸了的是進(jìn)
        <p>你好</p>
    </div>
    <script type="text/javascript">
        var oDiv = document.getElementsByTagName('div')[0],
            oAll = oDiv.cloneNode( false );
        console.log( oAll );

補(bǔ)充

innerHTML與createElement比較
在IE下 innerHTML性能秒殺createElement
其他瀏覽器innerHTML高一點(diǎn)點(diǎn)

如果選擇哪個呢溃睹?

    <div class="wrap"></div>
    <script type="text/javascript">
        var oDiv = document.getElementsByTagName('div')[0],
            oA = document.createElement('a');
            oA.innerHTML = '點(diǎn)擊跳轉(zhuǎn)百度';
            oA.;
            oDiv.appendChild( oA );
    </script>
可以用innerHTML來代替

    <script type="text/javascript">
        var oDiv = document.getElementsByTagName('div')[0];
        oDiv.innerHTML = '<a  >點(diǎn)擊跳轉(zhuǎn)百度</a>';
    </script>

要添加的標(biāo)簽沒有添加事件時候用innerHTML

添加事件的時候

var oDiv = document.getElementsByTagName('div')[0],
           oA = document.createElement('a');
           oA.innerHTML = '點(diǎn)擊跳轉(zhuǎn)百度';
           oA.;
           oA.onclick = function (){
               alert(1);
           }
           oDiv.appendChild( oA );

innerHTML寫法
<script type="text/javascript">
       var oDiv = document.getElementsByTagName('div')[0];
       oDiv.innerHTML = '<a  >點(diǎn)擊跳轉(zhuǎn)百度</a>';
       var oA = document.getElementsByTagName('a')[0];
           oA.onclick = function () {
               alert(1);
           }
   </script>

添加事件的時候用createElement

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末而账,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子因篇,更是在濱河造成了極大的恐慌泞辐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竞滓,死亡現(xiàn)場離奇詭異咐吼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)商佑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門锯茄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茶没,你說我怎么就攤上這事肌幽。” “怎么了抓半?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵喂急,是天一觀的道長。 經(jīng)常有香客問我笛求,道長煮岁,這世上最難降的妖魔是什么讥蔽? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮画机,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘新症。我一直安慰自己步氏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布徒爹。 她就那樣靜靜地躺著荚醒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隆嗅。 梳的紋絲不亂的頭發(fā)上界阁,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音胖喳,去河邊找鬼泡躯。 笑死,一個胖子當(dāng)著我的面吹牛丽焊,可吹牛的內(nèi)容都是我干的较剃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼技健,長吁一口氣:“原來是場噩夢啊……” “哼写穴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雌贱,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤啊送,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后欣孤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馋没,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年导街,在試婚紗的時候發(fā)現(xiàn)自己被綠了披泪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搬瑰,死狀恐怖款票,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情泽论,我是刑警寧澤艾少,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站翼悴,受9級特大地震影響缚够,放射性物質(zhì)發(fā)生泄漏幔妨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一谍椅、第九天 我趴在偏房一處隱蔽的房頂上張望误堡。 院中可真熱鬧,春花似錦雏吭、人聲如沸锁施。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悉抵。三九已至,卻和暖如春摘完,著一層夾襖步出監(jiān)牢的瞬間姥饰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工孝治, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留列粪,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓荆秦,卻偏偏與公主長得像篱竭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子步绸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353