基础知识
JavaScript分为 ECMAScript,DOM,BOM。
- BOM (Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”。
 - DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素(标签)。
 
BOM 对象
BOM(Browser Object Mode)浏览器对象模型,是Javascript的重要组成部分。
它提供了一系列对象用于与浏览器窗口进行交互,这些对象通常统称为BOM。

window 对象 – BOM核心
1、它表示整个浏览器窗口,主要用来操作浏览器窗口
2、所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
3、全局变量是 window 对象的属性。全局函数是 window 对象的方法。
4、Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分对象的共同祖先,在调用window对象的方法和属性时,可以省略window对象的引用。
例如:window.document.write()可以简写成:document.write()。 
- 所有浏览器都支持 window 对象。
 - 概念上讲.一个html文档对应一个window对象。
 - 功能上讲: 控制浏览器窗口的。
 - 使用上讲: window对象不需要创建对象,直接使用即可。
 
1  | // 一些常用的Window方法:  | 
window 的子对象
navigator对象(了解即可)
1  | // 浏览器对象,通过这个对象可以判定用户所使用的浏览器,包含了浏览器相关信息。  | 
screen对象(了解即可)
1  | // 屏幕对象,不常用。  | 
history对象(了解即可)
1  | // 浏览历史对象,包含了用户对当前页面的浏览历史,但我们无法查看具体的地址,可以简单的用来前进或后退一个页面。  | 
location对象
1  | // 用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。  | 
弹出框
1  | // JavaScript 中创建三种消息框:警告框、确认框、提示框。  | 
定时器
- setTimeout() 和 clearTimeout() 在指定时间之后执行一次相应函数。
 - setInterval() 和 clearInterval() 在指定的周期(以毫秒计)来调用函数或计算表达式。
 
1  | // 一定时间间隔之后执行  | 
1  | // 每隔多少秒执行一次  | 
DOM 对象
- DOM(Document Object Model)是一套对文档的内容进行抽象和概念化的方法。
 - 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
 - HTML DOM 模型被构造为对象的树。
 
HTML DOM 树
- dom树是为了展示文档中各个对象之间的关系,用于对象的导航。
 


DOM都有哪一些内容
- HTML 文档中的每个成分都是一个节点。
DOM标准规定HTML文档中的每个成分都是一个节点(node):- 文档节点(document对象):代表整个文档
 - 元素节点(element 对象):代表一个元素(标签)
 - 文本节点(text对象):代表元素(标签)中的文本
 - 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
 - 注释是注释节点(comment对象)
 
 

JS 操作DOM
- JavaScript 可以通过DOM创建动态的 HTML
 - JavaScript 能够改变页面中的所有 HTML 元素
 - JavaScript 能够改变页面中的所有 HTML 属性
 - JavaScript 能够改变页面中的所有 CSS 样式
 - JavaScript 能够对页面中的所有事件做出反应
 
查找标签
直接查找
1  | // 通过id查找标签  | 
1  | // 根据class属性获取所有标签  | 
1  | // 根据标签名获取标签合集  | 
间接查找
1  | parentElement // 父节点标签元素  | 
1  | // 查找父节点  | 
1  | // 查找所有子标签  | 
1  | // 第一个子标签元素 和 最后一个  | 
1  | // 下一个兄弟标签元素 和 上一个  | 
节点操作
创建节点
1  | // 语法:createElement(标签名)  | 
添加节点
1  | // 追加一个子节点(作为最后的子节点)  | 
1  | var imgEle = document.createElement("img") // 创建img节点  | 
1  | // 在某个标签前面添加 insertBefore(要插入的新标签,哪个标签之前)  | 
删除节点
1  | // 语法:somenode.removeChild(要删除的节点)  | 
替换节点
1  | // 语法:somenode.replaceChild(newnode, 某个节点);  | 
属性操作
获取属性
1  | // 获取元素节点中指定属性的属性值  | 
设置属性
1  | // 默认属性都可以修改  | 
删除属性
1  | d2.removeAttribute("age")  | 
文本操作
innerHTML 和 innerText的区别:
* innerHTML:子标签和子标签的内容都取出来,主要记这个:快速添加简单的标签
* innerText:只取标签之间的内容 
获取标签文本
1  | // 获取标签内的文本信息  | 
替换标签文本
1  | d2Ele.innerText = "全部修改" // 修改文本内容 连子标签都没了,只剩下了文本  | 
获取标签和文本
1  | // 获取d2下面所有html内容,包括标签和文本  | 
快速添加简单的标签
1  | // 原先的标签会被替换  | 
获取值操作
1  | // 语法:elementNode.value  | 
1  | var textEle = document.getElementById("i1")  | 
1  | <div class="c1 c2 c3">div</div>  | 
1  | var divEles = document.getElementsByTagName("div")  | 
1  | // 切换颜色实例  | 
指定CSS操作
1  | // dom 直接修改样式  | 
JS操作CSS属性的规律:
1  | // 1.对于没有中横线的CSS属性一般直接使用style.属性名即可。如:  | 
1  | // 2.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。如:  | 
事件
常用事件
1  | onclick //当用户点击某个对象时调用的事件句柄。  | 
绑定方式
1  | <div class="c1 c2 c3" onclick="change(this);">div</div>  | 
事件示例
定时器练习
1  | <input id="i1" type="text">  | 
搜索框
1  | <!--test框的默认值,在点击test框时消失-->  | 
select 联动
1  | <select name="" id="s1">  | 
