原生js學習筆記4——DOM操作

什么是DOM

DOM:Document Object Model,文檔對象模型,把整個文檔當成一個一個的節(jié)點對象。

他是:

  1. js的組成部分
  2. 一套標準,目前有DOM1和DOM2這兩種標準

我們可以使用DOM操作來操作頁面中的元素。

DOM節(jié)點

子節(jié)點

  • childNode:返回值一個數(shù)組,放的是父節(jié)點中所有的子節(jié)點
  • nodeType:返回值是一個數(shù)組,1表示元素節(jié)點,3表示文本節(jié)點

在某些瀏覽器中,如火狐,使用childNode獲取所有元素節(jié)點時會把空格等一起或取出來,此時就需要使用nodeType來判斷。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        // 使用childNode獲取到所有的li標簽,并將背景顏色改為紅色
        
        window.onload = function  () {
            var oUl = document.getElementById('ul');

            for (var i = 0; i < oUl.childNodes.length; i++) {
                // 判斷nodeType的值是否為1
                if (oUl.childNodes[i].nodeType == 1) {
                    oUl.childNodes[i].style.backgroundColor = 'red';
                };
            };

        }
    </script>
</head>
<body>
    <ul id = 'ul'> 
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
</html>

  • childern: 取子節(jié)點,與childNode相比,chlidren不會把非標簽元素解析出來,不用擔心兼容性問題

父節(jié)點

  • parentNode

首尾子節(jié)點

IE下的語法 火狐下的語法 含義
firstChild firstElementChild
lastChild lastElementChild

兄弟節(jié)點

IE下的語法 火狐下的語法 含義
nextSibling nextElementSibling 下一個
previousSilbing previousElementSibling 上一個

添加元素

createElement(元素名):創(chuàng)建一個元素

父元素.appendChild(子元素)將子元素添加進父元素中(添加在最后邊)

示例:點擊一次按鈕,添加一個li標簽


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        window.onload = function() {
            var oBtn = document.getElementById('btn');
            var oUl = document.getElementById('ul');
            var oText = document.getElementById('text');

            oBtn.onclick = function () {
                // 創(chuàng)建一個新標簽
                var oLi = document.createElement('li');
                // 將輸入框中的文字寫在新li標簽中
                oLi.innerHTML = oText.value;
                // 將新標簽添加在父標簽里
                oUl.appendChild(oLi);
            }
        }
    </script>
</head>
<body>
    <input type="text" id = "text">
    <input type="button" value="點擊添加" id = "btn">
    <ul id = "ul">
        <li>hello</li>
    </ul>
</body>
</html>

父元素.insertBefore(子元素,在誰之前插入),在誰之前插入子元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        window.onload = function() {
            var oBtn = document.getElementById('btn');
            var oUl = document.getElementById('ul');
            var oText = document.getElementById('text');

            oBtn.onclick = function () {
                // 創(chuàng)建一個新標簽
                var oLi = document.createElement('li');
                // 將輸入框中的文字寫在新li標簽中
                oLi.innerHTML = oText.value;
                // 將新標簽添加在父標簽里
                // oUl.appendChild(oLi);
                var aLi = document.getElementsByTagName('li');
                                // 在第0個元素之前插入新元素
                oUl.insertBefore(oLi, aLi[0]);
            }
        }
    </script>
</head>
<body>
    <input type="text" id = "text">
    <input type="button" value="點擊添加" id = "btn">
    <ul id = "ul">
        <li>hello</li>
    </ul>
</body>
</html>

刪除元素

父元素.removeChild(要刪除的元素):刪除父元素中的某個子元素

示例:點擊刪除,刪除某個元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        window.onload = function() {
            var oBtn = document.getElementsByTagName('a');
            var oUl = document.getElementById('ul');

            for (var i = 0; i < oBtn.length; i++) {
                oBtn[i].onclick = function() {
                    oUl.removeChild(this.parentNode);
                }
            };
        }
    </script>
    
</head>
<body>
    <input type="text" id = "text">
    <input type="button" value="點擊添加" id = "btn">

    <ul id = "ul">
        <li>hello<a href="javascript:;">刪除</a></li>
        <li>123<a href="javascript:;">刪除</a></li>
        <li>234<a href="javascript:;">刪除</a></li>
        <li>hel234lo<a href="javascript:;">刪除</a></li>
    </ul>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容