2014-04-28 24 views
2

看到Chrome DevTools中的節點數量,我想知道在單擊Button1之後單擊Button1以及單擊Button2之後dom樹中的差異。

'innerHTML'和'appendChild'之間的區別

的index.html

<html> 
<head> 
    <script src="./js/main.js" type="text/javascript" charset="utf-8"></script> 
    <link rel="stylesheet" href="style/default.css"> 
</head> 
<body> 
    <div id="buttons"> 
     <div class="button" id="button1">Execute1</div> 
     <div class="button" id="button2">Execute2</div> 
    </div>  
    <div id="main"></div> 
    <div id="main2"></div> 
</body> 
</html> 

main.js

document.addEventListener("DOMContentLoaded", function() { 
    var button1 = document.getElementById('button1'); 
    button1.addEventListener('click', function() { 
     document.getElementById('main').innerHTML += '<div>hello</div>'; 
    }); 

    var button2 = document.getElementById('button2'); 
    button2.addEventListener('click', function() { 
     var div = document.createElement('div'); 
     div.appendChild(document.createTextNode('hello2')); 
     document.getElementById('main2').appendChild(div); 
    }); 
}); 

default.css

#buttons { 
    display:-webkit-flex; 
    align-items: center;  
} 

.button { 
    height: 30px; 
    width: 100px; 
    margin: 5px; 
    background-color: #0080C0; 
    color: #FFFFFF; 
    display:-webkit-flex; 
    align-items: center; 
    justify-content: center; 
    cursor: pointer; 
} 

當我點擊Button1的,節點的數量由4
增加但是,當我點擊按鈕2,節點的數量由2
被2遞增遞增有道理的我,因爲他們可能是一個'div'元素和文本節點'hello2'。
但是,單擊Button1,還要添加哪些其他節點?

enter image description here

+0

一個使用DOM和另一個瀏覽器功能。 – DanMan

+1

相關:http://stackoverflow.com/questions/2305654/innerhtml-vs-appendchildtxtnode – mehlon

回答

6

使用appendChild增加了一個新的DOM元素的父節點的結束。

使用innerHTML +=取得父節點的現有DOM內容,將其串行化爲HTML中的字符串,在字符串末尾添加更多HTML,擦除父節點中的現有元素,從該字符串生成DOM元素,然後將新節點追加到父節點。

+0

那麼,最後,使用'innerHTML + ='的附加節點是'div'和'hello1'的文本節點? – Nigiri

0

的innerHTML將替換所有內容,並會的addChild孩子添加到現有的,我認爲

-1

innerHTML只會更新你指的是DOM html元素節點。

另一方面,'appendChild'會在上下文中爲您的「父」元素添加一個嵌套的DOM HTML元素(子)節點。 例如:一個<ul>將其追加的孩子 - 也就是<li>

0

innerHTML和appendChild的區別 jquery/Javascript:innerHTML和appendChild有什麼區別?

答案:

appendChild用於在DOM中插入新節點。 innerHTML是DOM的一個屬性,它允許用不同的HTML替換元素的內容,並自動將其解析爲DOM節點。

please_read_the link

相關問題