# 節點操作
- getElementById
- getElementsByClassName
- getElementsByTagName
- querySelector(All)
- createElement
- innerText
- appendChild
- insertBefore
- removeChild
- innerHTML
## 獲取節點
通過dom樹獲取節點(可維護性差)
- 父子關系
- parentNode
- firstChild/lastChild/childNodes
- 兄弟關系
- previousSibling/nextSibling
- previousElementSibling/nextElementSibling
通過接口獲取節點
- element = document.getElementById
- collection = element.getElementsByTagName
- collection = document.getElementsByClassName
- list = elementquerySelector(All)
collection is live(獲取的集合是動態的)
list is not live(獲取的列表不是動態的)
``` javascript
<body>
<div id="users">
<h2>8882人在學習該課程:</h2>
<ul>
<li class="user">
<a href="/user/1">Satoshi</a>
</li>
<li class="user">
<a href="/user/2">春來草青</a>
</li>
<li id="lastUser" class="user last">
<a href="/user/3">Kash</a>
</li>
</ul>
</div>
<script>
var users = document.getElementById('users');
var a = users.getElementsByTagName('li');
alert('一共有' + a.length + '個用戶!');
var lastUser = document.getElementById('lastUser');
lastUser.parentNode.removeChild(lastUser);
alert('一共有' + a.length + '個用戶!');
</script>
</body>
```
| name | only document | sole| live|
| -------- | --------| --------| --------|
| getElementById| Y| Y | | |
| getEmementsByTagName | | | Y|
| getElementsByClassName | | | Y|
| querySelectorAll| | | |
| querySelector| | Y| |
## 創建節點
element = document.createElement(tagName)
## 修改節點
element.textContent(節點及其后代節點的文本內容)
element.innerText(節點及其后代節點的文本內容,ff不支持, 不是標準規范)
## 插入節點
var achild = dlement.appendChild(achild)
var achild = dlement.insertBefore(achild, referenceChild)
## 刪除節點
child = element.removeChild(child)
## innerHtml
element.innerHTML(節點的HTML內容)
- 內存泄漏
- 安全問題
建議僅用于新節點
- 頁面制作
- HTML
- 標簽
- css
- 選擇器
- 文本
- 盒模型
- 背景
- 布局
- 變形
- 過渡和動畫
- JavaScript程序設計
- 基礎篇
- 基本語法
- 基本類型
- 運算符與表達式
- 語句
- 數值
- 字符串
- 對象
- 數組
- 函數
- Date
- RegExp
- JSON
- 進階篇
- 類型進階
- 函數進階
- 原型
- 變量作用域
- 閉包
- 面向對象
- DOM編程藝術
- 基礎篇
- 文檔樹
- 節點操作
- 屬性操作
- 樣式操作
- 事件
- 數據通信
- 數據存儲
- 動畫
- 音頻與視頻
- canvas
- BOM
- 表單操作
- 列表操作
- 實踐篇
- 組件實踐
- 頁面架構
- CSS Reset
- 布局解決方案
- 居中布局
- 多列布局
- 全屏布局
- 響應式
- 頁面優化
- 規范與模塊化
- 規范
- 模塊化
- 產品前端架構
- 協作流程
- WEB系統
- 角色定義
- 協作流程
- 職責說明
- 接口設計
- 接口規范
- 規范應用
- 本地開發
- 版本管理
- 分支模型
- git
- 技術選型
- 模塊化
- 框架
- 開發實踐
- 系統設計
- 系統實現
- 測試發布