# 节点操作
- 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
- 技术选型
- 模块化
- 框架
- 开发实践
- 系统设计
- 系统实现
- 测试发布