JavaScript操作DOM對象 Day05

JavaScript操作DOM對象

0 核心

瀏覽器網頁就是一個Dom樹形結構!

  • 獲取Dom節點:得到Dom節點
  • 更新:更新Dom節點
  • 添加:添加一個新的節點
  • 刪除:刪除一個Dom節點

要操作一個Dom節點,就必須要先獲得這個Dom節點。

1 獲取Dom節點

獲得Dom節點代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="father">
    <h1>標題一</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>

<script>
    var h1 = document.getElementsByTagName('h1');
    var p1 = document.getElementById('p1');
    var p2 = document.getElementsByClassName('p2');
    var father = document.getElementById('father');

    var children = father.children; //獲取父節點下的所有字節點
    // father.firstChild
    // father.lastChild
</script>
  
</body>
</html>

以上爲原生代碼,之後儘量都使用jQuery();

2 更新節點

<div id="id1">

</div>

<script>
    var id1 = document.getElementById('id1');
</script>

操作文本:

  • id1.innerText = '123456'修改文本的值
  • id1.innerHTML = '<strong>123</strong>'可以解析HTML文本標籤。

操作樣式:

id1.style.color = 'red'; //屬性使用字符串包裹
"red"
id1.style.fontSize = '20px'; //注意駝峯命名問題
"20px"
id1.style.padding = '2em';
"2em"

3 添加節點

在插入節點時,如果獲取的Dom節點是空的,就可以通過innerHTML增加一個元素,但是如果Dom節點已經存在元素,就不可以這麼做,因爲會產生覆蓋,原來元素會丟失。

故對於上述情況,使用追加

代碼測試:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<p id="js">JavaScript</p>
<div id="list">
    <p id="se">JavaSE</p>
    <p id="ee">JavaEE</p>
    <p id="me">JavaME</p>
</div>

<script>

</script>
</body>
</html>

測試前:

在這裏插入圖片描述

3.1 將已有節點追加到指定位置:

測試代碼:

var js = document.getElementById('js');
var list = document.getElementById('list');
list.appendChild(js)

測試後:

在這裏插入圖片描述

3.2 創建一個新的節點並追加:

測試代碼:

var list = document.getElementById('list');
var newp = document.createElement('p'); //創建一個p標籤
newp.id = 'newp';
newp.innerText = 'Hello Demut';
list.appendChild(newp); //追加

測試結果:

在這裏插入圖片描述

3.3 添加一個標籤節點:

測試代碼:

//創建一個標籤節點, 通過這個屬性可以修改任意的值。
var myScript = document.createElement('script');
myScript.setAttribute('type','text/javascript')
list.appendChild(myScript);

成功添加:

在這裏插入圖片描述

3.4 添加一個style標籤

測試代碼:

var mystyle = document.createElement('style');
mystyle.setAttribute('type','text/css');
mystyle.innerHTML = 'body{background-color:chartreuse;}';//設置標籤內容
document.getElementsByTagName('head')[0].appendChild(mystyle);

測試結果:

在這裏插入圖片描述

3.4 .insertBefore()

測試代碼:

var ee = document.getElementById('ee');
var js = document.getElementById('js');
var list = document.getElementById('list');
// 要包含的節點.inserBefore(newNode,targetNode);
list.insertBefore(js,ee);

測試結果:

在這裏插入圖片描述

4 刪除DOM節點

步驟: 1. 獲取父節點。 2. 通過父節點刪除自己。

代碼測試:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="father">
    <h1>標題一</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>
  
</body>
</html>

測試前:

在這裏插入圖片描述

測試代碼:(瀏覽器控制檯中)

var self = document.getElementById('p1'); // 獲取Dom節點
var father = self.parentElement; //獲取p1的父節點
father.removeChild(self);

測試後:

在這裏插入圖片描述

注意: 此處演示一個錯誤的操作,同樣對於上面的測試案例。

// 刪除是一個動態的過程
father.removeChild(father.children[0])
father.removeChild(father.children[1])
father.removeChild(father.children[2])

說明:刪除多個節點的時候,children是在時刻變化的,刪除節點的時候一定要注意!

寫在最後

行百里者半九十!

——《戰國策·秦策五·謂秦王》

To Demut and Dottie!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章