拖拽:(拖拽三剑客)
mousedown
记录鼠标按下位置和被拖拽物体相对距离
var offsetX=e.clientX - node.offsetLeft;
var offsetY=e.cIientY - node.offsetTop;
mousemove
一致保持,相对距离
node.style.left = e.clientX - offsetX +‘px’;
node.style.top = e.clientY - offsetY + ‘px’;
mouseup
取消拖拽
事件委托实现步骤:
1、找到当前节点的父节点或者祖先节点
2、将事件添加到你找到的这个父节点或者祖先节点上
3、找到触发对象,判断触发对象是否是想要的发对象,进行后续的操作
事件监听器
addEventListener()
格式:node.addEventListener("cIick")
参数:
第一个参数 事件类型
第二个参数 绑定函数
第三个参数 布尔值 true 事件捕获
false 事件冒泡 默认
removeEventListener()
格式:node.removeEventListener
参数:第一个参数 事件类型
第二个参数 删除函数的名字
正则表达式对象只有两个方法
test
格式:正则.test(字符串)
功能:在字符串中匹配这个正则是否存在
返回值:如果匹配成功返回true,匹配失败返回false。
exec
格式:正则.exec(字符串)
功能:在字符串中匹配这个正则是否存在
返回值:返回匹配到的串,匹配成功,返回一个装有字符串的数组
匹配失败,返回null
元字符
\w 匹配单个的数字、字母下划线等价于[a-zA-Z0-9-J
\W 匹配单个非数字、字母下划线
\d 匹配单个数字 等价于[0-9〕
\D 匹配单个非数字
[^] 匹配任意一个除括号范围范内的字符
【例】 [^0-9] 匹配任意一个非数字字符
重复字符 x(任意的单个字符)
x? 匹配0个或者1个x
x+ 匹配至少一个x字符
x* 匹配任意个x字符
x{m,n} 至少匹配m个,最多n个x字符,包拯n
x{n} 必须匹配n个x字符
修饰符
i 忽略大小写
g 全局匹配
m 换行匹配 如果在字符串,遇到换行,重新开始计算行首。
检验是不是纯中文 var box = /^[\u4e00—\u9fa5]+$/;
本地存健技术:
localStorage (IE8以下不兼容)
1.永久存储
2.最大可以存5M 客户端的一个微型数据库
3.只能储存String
locaIStorage对象
setItem(name,value);
getltem(name);
removeltem(name);
三种格式
localStorage.setItem("a",“1”);
IocalStorage.b = "2";
localStorage["c"] = "3";
cookie
1.可以设置过期时间
2.最大可以存4KB
3.每个域名下最多储存50条数据 (第二条和第三条只要一个达到极限就全部极限)
sessionStorage(结合后台)
时间短 存储少
强制数据类型转换
call
格式:函数名.caIl();
第一个参数:传入该函数this指向的对象,传入什么强制指向什么
第二个参数开始:将原函数的参数往后顺延一位。
apply
格式:函数名.apply();
第一个参数:传入该函数this指向的对象,传入什么强制指向什么
第二个参数:数组 数组,放入我们原有所有的参数
let 关键字
let关键字 声明变量 相对var作用域更小,只要遇到大括号就形成作用域
【注意】let关键字声明的变景,所在作用域叫做块级作用域.
在循环中声明了var常量最后是一个,但是如果用let是循环了几次就有几个
var关键字 声明变量 将变量形参所在函数的大括号作为作用域处理。
const关键字 声明变量 变量值只能在声明的时候确定,后续是没有办法修改的。
【注意】const声明常量 (变量没有办法改);