JavaScript之向文檔中添加元素和內容的方法


一、非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.順序不同可能會影響最后的添加成敗!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM