記錄我的旅程4之JavaScript Dom學習筆記

來源:互聯網
上載者:User

好長時間有沒有寫部落格了,從今天起我的部落格之路繼續了,嘿嘿下面我們接著旅程3繼續我們的Dom征程4,這篇博文講的是Dom的動態建立。

  1. Dom的動態建立

(1) document.write只能在頁面載入過程中才能動態建立

(2) 可以調用document的createElement方法來建立具有指定標籤的Dom對象,然後通過調用某個元素的appendChild方法將新建立的元素添加到相應的元素下。

    <script type="text/javascript">

        function btnClick() {

            var divMain = document.getElementById("divMain");  //獲得層

            var input = document.createElement("input"); 

            input.value = "我的動態按鈕";

            input.type = "button";

            divMain.appendChild(input);  //將產生的元素添加到divMain層

        }

    </script>

<body>

    <div id="divMain"></div>

    <input type="button" value="點擊" onclick="btnClick()" />

</body>

(3)innerText,innerHTML

 1) 幾乎所有的Dom元素都有innerText,innerHTML 屬性(注意大小寫),分別是元素標籤內容的文本表示形式和HTML原始碼,這兩個屬性是可讀可寫的。

  <a href="http://www.baidu.com" id="link1">百<font color="red">度</font></a>

    <input type="button" value="inner" onclick="alert(document.getElementById('link1').innerText);alert(document.getElementById('link1').innerHTML);" />

    <input type="button" value="innerText" onclick="document.getElementById('link1').innerText='百度'" />

    <input type="button" value="innerHTML" onclick="document.getElementById('link1').innerHTML='<font color='Yellow'>部落格園</font>'" />

 2) 用innerHTML也可以替代createElement,屬於簡單粗放型。

    <script type="text/javascript">

        function createInput() {

            var divMain = document.getElementById("divMain");

            divMain.innerHTML = "<input type='button' value='按鈕' />";

        }

    </script>

    <div id="divMain"></div>

    <input type="button" value="動態建立" onclick="createInput()" />

注釋:這個動態建立按鈕只能建立一個按鈕,不能重複的建立。

練習1:點擊按鈕增加一個網站的超連結

    <script type="text/javascript">

        function createLink() {

            var divMianLink = document.getElementById("divMainlink");

            var link = document.createElement("a");

            link.href = "http://www.cnblogs.com";

            link.innerText = "百度  ";

            divMainlink.appendChild(link);

        }

    </script>

    <div id="divMainlink"></div>

    <input type="button" value="產生" onclick="createLink()" />

練習2:點擊按鈕動態增加網站列表,分兩列,第一列為網站的名字,第二列為帶網站超連結的的網站名,增加三行常見網站。

    <script type="text/javascript">

        function loadData() {

            var data = { "百度": "http://www.baidu.com", "部落格園": "http://www.cnblogs.com", "新浪": "http://www.sina.com" };

            var tableLinks = document.getElementById("tableLinks");

            for (var key in data) {

                var value = data[key];

                var tr = document.createElement("tr");

                var td1 = document.createElement("td");  //先建立td,放入內容,在加入tr

                td1.innerText = key;

                tr.appendChild(td1);

                var td2 = document.createElement("td");

                td2.innerHTML = "<a href='" + value + "'>" + value + "</a>";

                tr.appendChild(td2);

                tableLinks.appendChild(tr);

            }

        }

    </script>

    <table id="tableLinks"></table>

<input type="button" value="載入" onclick="loadData()" />

注釋:動態產生的元素,查看原始碼是看不到的,通過F12開發人員工具或者DebugDar—>Dom—>文檔—>HTML可以看到。

注釋:瀏覽器安全色性的例子,ie6,ie7不支援table.appendChild(“tr”).

詳註:瀏覽器安全色新問題

(1) 瀏覽器安全色性的例子,ie6,ie7對table.appendChild(“tr”)的支援和IE8不一樣,用insertRow,insertCell來代替或者為表格添加tbody,然後向tbody中添加tr,FF不支援innerText。所以動態載入網站的列表程式修改為:

    var tr = tableLinks2.insertRow(-1);

    var td1 = tr.insertCell(-1);

    td1.innerText = key;

    var td2 = tr.insertCell(-1);

    td2.innerHTML = "<a href='" + value + "'>" + value + "</a>";

或者<table id=”tableLinks”>

              <tbody></tbody>     </table>

然後tableLinks.tBodies[0].appendChild(tr);

重寫上述案例:代碼如下

        function loadData1() {

            var data = { "百度": "http://www.baidu.com", "部落格園": "http://www.cnblogs.com", "新浪": "http://www.sina.com" };

            var tableLinks = document.getElementById("tableLinks2");

            for (var key in data) {

                var value = data[key];

                var tr = tableLinks2.insertRow(-1);

                var td1 = tr.insertCell(-1);

                td1.innerText = key;

                var td2 = tr.insertCell(-1);

                td2.innerHTML = "<a href='" + value + "'>" + value + "</a>";

            }

        }

    <table id="tableLinks2"></table>

    <input type="button" value="相容IE6,7載入" onclick="loadData1()" />

 

練習3:練習點評無重新整理評論。

    <script type="text/javascript">

        function addComment() {

            var nickname = document.getElementById("nickname").value;

            var comment = document.getElementById("comment").value;

            var tableComment = document.getElementById("tableComment");

            var tr = document.createElement("tr");

            var tdnickName = document.createElement("td");

            tdnickName.innerText = nickname;

            tr.appendChild(tdnickName);

            var tdCommnent = document.createElement("td");

            tdCommnent.innerText = comment;

            tr.appendChild(tdCommnent);

            tableComment.tbodies[0].appendChild(tr);

        }

    </script>

    <p>評論區</p>

    <table id="tableComment">

        <tbody> </tbody>

    </table>

    暱稱:<input type="text" id="nickname" /><br />

    內容:<textarea id="comment"></textarea><br />

    <input type="button" value="評論" onclick="addComment()" />

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.