一、非DOM方法添加
1、document.write()
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
function insertParagrah(txt) {
var str = "<i>";
str += txt;
str += "</i>";
document.write(str);
}
insertParagrah("Hello World!");
</script>
</head>
<body>
</body>
簡單的說下:這個方法無法向特定的標簽下添加內容,還有就是與MIME類型application/xhtml+xml 不兼容,雖然能實現向文檔下添加內容和元素的功能,但是不是很推薦使用;
2.innerHtml屬性
這個屬性幾乎所有的瀏覽器都支持,但是這個屬性並不是W3C DOM的標准的組成部分,最重要的是這個屬性Html5都支持。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
window.onload = function () {
var testdiv = document.getElementById("testdiv");
alert(testdiv.innerHTML);
}
</script>
</head>
<body>
<div id="testdiv">
<p>This is<em>my</em>Content.</p>
</div>
</body>
</html>
輸出i:<p>This is<em>my</em>Content.</p>; nnerHtml毫無細節可言,如果你想要獲得ID=testdiv下的細節只能通過dom的屬性和方法;
innHtml就像一把大錘一樣粗放,而標准化的DOM就像手術刀一樣精細。大錘也會有大錘的用處,當你需要把一大段html加入到文檔里時,顯然用innerHtml更合適.innerHtml不僅支持讀取,還支持寫入;
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
window.onload = function () {
var targetdiv = document.getElementById("targetdiv");
targetdiv.innerHTML = "<p>This is<em>my</em>Content.</p>";
}
</script>
</head>
<body>
<div id="targetdiv"></div>
</body>
</html>
二、DOM方法添加內容
1、createElement()
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
window.onload = function () {
var para = document.createElement("p");//創建一個p標簽
var info = "nodeName:";
info += para.nodeName;
info += " nodeType:";
info += para.nodeType;
alert(info);
}
</script>
</head>
<body>
</body>
</html>
輸出:nodeName:P nodeType:1 注意:根據輸出我們可以判斷當使用document.createElement()方法創建出<p></p>標簽時他就已經存在了,雖然這個p標簽還沒被添加到文檔樹中,這種情況稱之為"文檔碎片";
2、appendChild()
創建完我們需要創建的標簽之后,就需要將創建好的標簽添加到需要添加的地方,appendChild()方法就是干這個的。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
window.onload = function () {
var para = document.createElement("span");
var testdiv = document.getElementById("testdiv");
testdiv.appendChild(para);
}
</script>
</head>
<body>
<div id="testdiv"></div>
</body>
</html>
運行html文件,
成功添加;
3、createTextNode()
ok,現在我們在我們需要添加標簽的地方成功了的添加了標簽,接下來就是往標簽里面添加文本內容了,createTextNode()就是干這個的;
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
window.onload = function () {
var testdiv = document.getElementById("testdiv");
var para = document.createElement("span");
testdiv.appendChild(para);
var em_txt = document.createTextNode("Hello World!");
para.appendChild(em_txt);
}
</script>
</head>
<body>
<div id="testdiv"></div>
</body>
</html>
成功添加; 注意appendChild的順序,添加的順序可以有很多種,你可以先把變遷和內容創建好,再向對應的容器append.順序不同可能會影響最后的添加成敗!
