JavaScript
JavaScript
基础认识
弹出提示对话框:alert(“弹出对话框”)
解释型语言,一行一行解释。
1 | <script> |
认识js
发明人:布兰登·艾奇(Brendan Eich,1961年~)
1995年利用十天完成JS设计
网景公司最初命名为LiveScript,后来与Sun合作改名JavaScript
运行在客户端浏览器上。
js的作用:
js的组成:
注释:
js的输入输出:
prompt取值是字符型的
变量
1 | var age;//声明一个名称为age的变量,赋值var age=18; |
只声明不赋值值为undefined
数据类型
数据类型可变
简单(基本)数据类型
判断变量是否为数字型的方法:
获取字符串String长度
1 | str.length |
转义符
undefined和null
判断变量类型typeof 变量名
1 | <script> |
这里的null类型为object,现在不考虑,后面会讲。
数据类型转换
1.转换成string
2.转换成数字型number
隐式转换
NaN
:not a number不是一个数字
3.转换成布尔型boolean
Boolean函数。例如:Boolean(‘true’);
数组
1 | var arr = new Array(2,3,4);//==>arr[2,3,4],若参数为一个,表示数组长度,元素为空 |
或者,利用字面量创建数组
1 | var arr = ['小明','小红','小强']; |
数组遍历:length拿数组长度
数组排序:
上图数组排序得到的结果:
1.arr [ ‘blue’, ‘red’, ‘pink’ ] ;
2.arr1 [1,4, 7, 13 ,77];
==sort()
函数默认只对一位数的数字排序生效,若要排序多位数数字,需要添加function方法。==
解析链接:Array.prototype.sort()
默认sort()排序结果:(位数大于一的数字出现结果不正确)
检测是否为数组:instanceof
和Array.isArray()
数组操作:添加或删除
1.添加
push();
2.删除
数组索引方法:
函数
声明和调用:function
第一行function getSum后面括号中的num1和num2是形参。
最后两行调用传入的两个参数叫实参。
两种声明方式:
return:
arguments
内置对象,存储传递来的所有实参,保存的形式是数组(伪数组)
作用域:
全局和局部
就近
对象
对象的创建3法
1 | <script> |
遍历forin:
1 | //遍历 |
日期Date对象:
获取时间戳:
为啥时是从1970年开始,自行百度。
时间戳转换成时分秒:
倒计时案例:
1 | <script> |
下面是模拟:
字符串
字符串基本操作
Web API
应用程序编程接口
DOM
dom树:
每一个元素可以看作一个对象
获取页面元素
- 根据ID获取(返回的是一个匹配到ID的DOM Element对象)
1 | document.getElementById(); |
可以使用console.dir();
查看
- 通过标签名获取(返回的是一个指定标签的集合)
1 | element.getElementByTagName(); |
- 通过类名获取
事件基础
例如,点击一个按钮,弹出对话框
1 | <button id="btn"> |
事件分为三部分:事件源、事件类型、事件处理程序。也叫事件三要素
1 | //1.事件源=事件被触发的对象(按钮) |
操作元素
- 改变元素内容
同时,亦可获取标签,innerText获取内容(去空格和换行),
innerHtml获取元素加内容,(保留空格和换行)
案例:密码框显示,隐藏密码
html
css
js
DOM核心重点
获取过来的DOM元素是一个对象所以称为文档对象模型
DOM操作:
>
- 创建
document.write
innerHTML
createElement
- 增
appendChild
insertBefore
- 删
removeChild
- 改(主要修改DOM元素的属性、内容、表单的值等)
- 修改元素属性:src、href、title等
- 修改普通元素内容:innerHTML、innerText
- 修改元素样式:style、className
- 修改表单元素:value、type、disabled等
- 查(获取DOM元素)
- DOM提供的API方法:querySelector()、querySelectorAll()。(H5新方法,推荐)
- 利用节点操作获取元素:父(parentNode)、子(children)、兄弟(previousElementSibling、nextElementSibling)。
- 属性操作(可自定义属性)
setAttribute()
:设置DOM的属性值getAttribute()
:得到DOM的属性值removeAttribute()
移除属性
- 事件操作
事件高级
1.注册事件(绑定事件)
注册事件两种方法:传统方式、方法监听注册方式
addEventListener()
事件监听方式
2.删除事件(解绑事件)
传统解绑方法:
1 | var divs = document.querySelectorAll('div'); |
方法监听注册解绑方式:
1 | // 2. removeEventListener 删除事件 |
3.DOM事件流
4.事件对象event
1 | // 事件对象 |
常见属性和方法:
ie以si,下列方法结合实际记忆
5.阻止事件冒泡
e.stopPropagation();
// stop 停止 Propagation 传播
下列代码为例,当点击父盒子中的son盒子时,不阻止事件冒泡,会发生弹出三个提示框(son、father和document),阻止事件冒泡后,父亲元素不在冒泡弹出框。只弹出son提示框。
1 | <script> |
6.事件委托
7.鼠标事件
常用:
e.preventDefault();
阻止默认事件;阻止默认右键显示菜单操作;
1 | <script> |
鼠标事件对象:
MouseEvent —> clientX、pageX、screenX
1 | <script> |
8.键盘事件
例如,网站的搜索框一般会设置一个快捷键,当我们点击s键时,利用ASCII码判断按下的键是否为s若是则给搜索框一个焦点。
源码:
1 |
|
BOM
window对象常见事件
1.窗口加载事件
// load 等页面内容全部加载完毕,包含页面dom元素 图片 flash css 等等
// DOMContentLoaded 是DOM 加载完毕,不包含图片 falsh css 等就可以执行 加载速度比 load更快一些
2.调整窗口大小事件
定时器
1.setTimeout()
定时器
1 | <script> |
停止setTimeout()
定时器
1 | <button>点击停止定时器</button> |
2.setInterval()
定时器
1 | <script> |
JS执行队列
异步:
location对象
URL
search得到的是网址主机问号?(包含)之后的数据,是string字符串
例如:https://editor.csdn.net/md/?articleId=1256752823244
location.search得到的是?articleId=1256752823244
可以用substr(1)方法去掉问号
navigator对象
history对象
PC端网页特效
丰富网页