## 什麼是DOM?
DOM全名叫document object model 是一個將 HTML 文件以樹狀的結構來表示的模型,而組合起來的樹狀圖,我們稱之為「DOM Tree」
## 為什麼需要DOM?
當收到一份如下的html檔,瀏覽器會從上到下一行一行的讀取,DOM tree 就是把所有的節點拆開後,彼此的關係會像一棵樹,故取名之
```xml=
<html>
<head>
<title>example</title>
</head>
<body>
<h1 class="txt">Hello World</h1>
</body>
</html>
```

以 document 為起點,可以延伸出許多的 HTML 標籤,一個節點就是一個標籤,往下又可以再延伸出「本文(text)節點」與「屬性 (Attribute)的節點」。
瀏覽器就是這樣一步一步的把 HTML 解析(parse) 成一顆 DOM tree
## 為什麼要學DOM?
DOM提供了一個文件(樹)的結構化表示法,並定義讓程式可以存取並改變文件架構、風格和內容的方法
JavaScript 就是透過 DOM 提供的 API 來對 HTML 做存取與操作。
## 基本的DOM操作 (DOM API)
### 怎麼存取element? (節點)
```xml=
//xxx 就是 css 的 selector
document.querySelector("xxx");
//特定元素
document.getElemantById("id");
```
## InnerHtml TextContent OuterHtml
---
* 範例如下:
```xml!0
<script>
<div id="test"><p>Hello,world</p></div>
</script>
```
* 說明:
1. ```<p>Hello,world</p>```就是InnerHTML
2. ```Hello,world```就是textContent
3. ```<div id="test"><p>Hello,world</p></div>```就是OuterHTML
* 我們最常用的是InnerHTML,一般都是對div,span進行操作,像是增加文字或數字
## 範例1
```xml
<html>
<body>
<p id="p1">Hello World!</p>
<script>
//document.querySelector(#p1).innerHTML = "New text!";
document.getElementById("p1").innerHTML = "New text!";
</script>
</body>
</html>
```
## Project 1
:::success
設計一個html裡的list,裡面分別資工、電機、通訊三個項目,取出這三個項目改成CS,EE,CO(你的html裡必須是電機、資工、通訊)
:::
原本:
* 電機
* 資工
* 通訊
---
後來:
* ee
* cs
* co
---
:::spoiler 解答
```htmlembedded!
<body>
<ul>
<li id="EE">電機</li>
<li id="CS">資工</li>
<li id="CO">通訊</li>
</ul>
</div>
<script>
var ee=document.getElementById('EE');
var cs=document.getElementById('CS');
var co=document.getElementById('CO');
ee.innerHTML="ee";
cs.innerHTML='cs';
co.innerHTML='co';
</script>
</body>
```
:::
---