基础知识
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"> |