javaScript基础 02
1. 内置对象
JavaScript中的对象分为4种:内置对象、自定义对象、浏览器对象、DOM对象。
1.1 Math
Math.PI 圆周率
常用方法
1 | Math.random() //生成随机数 |
1.2 Date
Date()是构造函数,想要使用Date方法,必须实例化new一个日期对象
1 | var date = new Date(); |
1.3 Number
1 | var a = 1.24325; |
1.4 Array
1 | var arr = [1, 3, 4, 6, 8]; |
1.4.1 排序方法
sort()
没有指定参数
1 | var arr = [1, 3, 4, 6, 8]; |
指定参数
- 如果compareFunction(a,b)返回值小于0,那么a会被排到b之前
- 如果compareFunction(a,b)返回值等于0,a和b的相对位置不变,不兼容所有浏览器
- 如果compareFunction(a,b)返回值大于0,b会被排列到a之前。
1 | arr.sort(function compareFunction(a, b) { |
要比较数字而非字符串,可以直接返回a-b,例如下面的函数将会将数组升序排列
1 | arr.sort(function compareFunction(a, b) { |
1.4.2 拼接与截取
concat()
把参数拼接到当前数组、 或者用于连接两个或多个数组
1 | var arr1 = ["zs", "ls"] |
slice(start,end)
- 索引从start开始截取元素,到end结束,
[start,end),返回新数组 - 不会改变原数组
1 | var arr2 = [1,2,3,4,5]; |
splice(start,length)
- 索引从start开始截取元素,截取length个,返回新数组
- 会改变元素的数组
1 | var arr2 = [1,2,3,4,5]; |
1.4.4 迭代与过滤
forEach()
用于调用数组的每个元素,并将元素传递给回调函数;传一个参数 value是数组值,两个参数 index是索引号
1 | var arr3 = [1, 2, 3, 4, 5] |
every(): 判断数组中元素是否全部满足回调函数,如果是,返回true;否则为false
1 | arr3.every(function (value) { return value<3; }); |
some(): 判断数组中是否有元素满足回调函数,如果是,返回true;否则为false
1 | arr3.some(function (value) { return value<3; }); |
filter(): 根据指定条件过滤元素,返回新数组
1 | arr3.filter(function (value) { return value>3; }); |
map(): 根据数学运算,返回新数组
1 | arr3.map(function (value) { return Math.pow(value,2); }); |
1.4.5 清空数组
- 推荐 arr = []
- arr.length = 0
- arr.splice(0, arr.length)
1.5 String
1 | var str = 'abc'; |
当重新给str赋值的时候,常量’abc’不会被修改,依然在内存中
重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
由于字符串的不可变,在大量拼接字符串的时候会有效率问题
1.5.1 取值方法
1 | charAt(0) //获取指定位置处字符 |
1.5.2 操作方法
1 | slice(start, end) //从索引start开始,到end结束;[start,end) |
2. DOM操作
2.1 获取DOM元素
通过id获取DOM元素;获取的是一个具体的DOM元素
document.getElementById("div1")
通过选择器获取单个元素;获取的是同选择器的第一个元素
document.querySelector(".box")
以下方法获取的都是由元素构成的伪数组,使用时要加上索引号
伪数组有length属性,可以遍历;伪数组没有普通数组的内置方法
document.getElementsByClassName("box")[0]通过类名获取元素
document.getElementsByTagName("h1")[0]通过标签名获取元素
document.getElementsByName("username")[0]通过name名获取元素
document.querySelectorAll(".box")[0]通过选择器获取所有元素
2.2 事件触发
事件三要素: 事件源、事件类型(触发方式)、事件处理程序
内部书写
1 | <button onclick="alert(999)">点击弹框</button> |
行内触发方法: 写一个js方法,行内调用
1 | <button onclick=fn1()>点击弹框</button> |
html外书写
1 | <button class="btn1">点击弹框</button> |
2.3 获取/修改元素的属性
1 | <style> |
表单默认属性也可以修改
- value 用于大部分表单元素的内容获取(option除外)
- type 可以获取input标签的类型(输入框或复选框等)
- disabled 禁用属性
- checked 复选框选中属性
- selected 下拉菜单选中属性
3. DOM属性操作与事件
3.1 阻止a链跳转
a标签绑定的onclick事件返回值为false
1 | link.onclick = function(){ return false } |
3.2 DOM事件
鼠标事件
获取/失去焦点onfocus/onblur
鼠标双击ondblclick
鼠标移入/移出onmouseover/onmouseout
鼠标进入/离开onmouseenter/onmouseleave
区别:
onmouseenter/onmouseleave强调进入;不支持冒泡冒泡:子元素事件执行,会递归执行所有父元素的触发事件
键盘事件
键盘按下/抬起onkeydown/onkeyup
浏览器事件
页面加载完成后执行window.onload
滚浏览器滚动条执行window.onscroll
3.3 文本内容属性
1 | // 只获取文本内容(包括css);不会解析标签 |
3.4 元素的属性操作
以下方法均可对自定义属性和原始属性操作
1 | //获取元素属性 |
3.5 元素的样式设置
1 | //<常用>对象.style |
4. 节点
HTML 文档中的所有内容都是节点:
- 整个文档是一个文档节点 document
- 每个 HTML 元素是元素节点
- HTML 元素内的文本是文本节点
- 每个 HTML 属性是属性节点
- 注释是注释节点
节点的操作
document.createElement('tagName')
创建节点
parentNode.appendChild(childNode)
添加节点,将一个节点添加到指定父节点的子节点列表末尾。类似于 CSS 里面的 after 伪元素。
parentNode.insertBefore(newChildNode, childNode)
将一个节点添加到父节点的指定子节点前面。类似于 CSS 里面的 before 伪元素。
parentNode.removeChild(child)
删除节点,从 DOM 中删除一个子节点,返回删除的节点。
node.cloneNode(flase)
复制节点,返回调用该方法的节点的一个副本。参数为false不复制子节点,参数为true复制子节点。

