DOM (文档对象模型/Document Object Model) 获取元素 通过 ID 获取
1 var box = document .getElementById ("mybox" );
根据 标签名 获取
返回的是元素对象集合 以数组的形式存储 如果要获取每个具体标签对象,通过循环遍历的方式
1 2 3 4 5 6 7 <ul > <li > 1</li > <li > 2</li > <li > 3</li > <li > 4</li > <li > 5</li > </ul >
1 document .getElementsByTagName ("li" );
根据 类名 获得
1 document .getElementsByClassName ("box" );
返回指定选择器的第一个 1 <div id ="nav" class ="box" > </div >
1 2 document .querySelector (".box" );document .querySelector ("#nav" );
返回指定选择器的第一个 1 2 <div class ="box" > </div > <div class ="box" > </div >
1 document .querySelectorAll (".box" );
获取 body html 元素 1 2 3 document .body ; document .documentElement ;
事件
事件源 事件类型 处理程序
绑定事件 on 的方式
通过 on 的方式给元素注册事件的时候,注册用一个事件,那么最后的事件会覆盖前面的事件
1 2 3 document .querySelectorAll (".box" ).onclick = function ( ) { };
常见的鼠标事件
事件名
触发条件
onclick
点击事件
onmouseenter
鼠标经过触发
onmouseleave
鼠标离开
onfocus
获得焦点
onblur
失去焦点
onmousemove
鼠标移动触发
onmouseup
鼠标弹起
onmousedown
鼠标按下
contextmenu
上下文菜单
selectstart
开始选中
常见的键盘事件
事件名
触发条件
oninput
输入事件
onkeydown
按下
onkeyup
松开
onkeypress
按下(不能获取系统按键)
事件监听的方式(多个人使用) 1 事件源.addEventListener (事件类型, 处理程序, boolean);
移动端触屏事件
事件名
触发条件
touchstart
按下事件
touchmove
移动事件
touchend
抬起事件
1 2 3 4 5 6 7 8 9 10 var div = document .querySelector (".box" );div.addEventListener ("touchstart" , function ( ) { console .log ("按下事件" ); }); div.addEventListener ("touchend" , function ( ) { console .log ("抬起事件" ); }); div.addEventListener ("touchmove" , function ( ) { console .log ("移动事件" ); });
删除事件 on 的方式
事件监听的方式 1 事件源.removeEventListener (事件类型, 处理程序(命名函数));
事件对象 PC 端 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 e.stopPropagation (); e.cancelBubble = true ; e.target ; e.target ; e.key ; e.keyCode ; e.clientX ; e.clientY ; e.offsetX ; e.offsetY ; e.pageX ; e.pageY ; e.screenX ; e.screenX ;
手机端 TouchEvent 1 2 3 4 5 6 7 8 9 10 11 12 e.touches ; e.touches .clientX ; e.touches .pageX ; e.touches .screenX ; e.targetTouches ; e.changedTouches ;
操作元素 操作元素内容 获取 写 元素内容 1 2 element.innerText ; element.innerHTML ;
操作表单 值 1 2 element.value ; element.value = "" ;
属性 1 2 3 4 element.type = 值; element.checked = 值; element.selected = 值; element.disabled = 值;
操作元素样式 行内样式 1 element.style .css 属性名 = 值;
添加类名 1 element.className = "类名" ;
操作属性 1 2 3 4 5 6 7 8 9 element.属性; element.属性 = 值; element.getAttribute ("属性" ); element.setAttribute ("属性" , 值); element.removeAttribute ("属性" ); element.dataset .属性名; element.dataset .属性名 = 值;
节点操作
页面中所有的内容都是节点
查找元素 1 2 3 4 5 6 7 8 9 10 11 12 node.parentNode ; node.children ; node.children [0 ]; node.firstElementChild ; node.children [element.children .length - 1 ]; node.lastElementChild ; node.nextElementSibling ; node.previousElementSibling ;
创建节点
先创建 在添加
1 2 3 4 5 document .createElement ("标签名" );node.appendChild ("子元素" ); node.insertBefore ("子元素" , 谁的前面);
删除节点
复制节点
先克隆 在添加
1 node.cloneNode (boolean);
BOM (浏览器对象模型/Browser Object Model) 常见事件
只能写一次,多个会加载最后一个
1 2 3 4 5 6 window .onload = function ( ) {};document .addEventListener ("DOMContentLoaded" , function ( ) {});window .onresize = function ( ) {};document .addEventListener ("resize" , function ( ) {});
定时器 setTimeout()
延时多少时间后执行
1 2 3 4 setTimeout (function ( ) {}, time);clearTimeout (定时器编号);
setInterval()
每隔一段时间执行一次
1 2 3 4 setInterval (function ( ) {}, time);clearInterval (定时器编号);
this 指向问题
在全局下,this 指向 window
在对象的方法下,this 指向调用对象
构造函数中,this 指向新的对象
apply 调用 this,指向 apply 的第一个参数
location 对象
获取或设置窗体 URL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 location.href = "路径" ; location.href ; window .open (页面路径);location.assign (页面路径); location.replace (路径); location.reload (boolean); location.host ; location.hostname ; location.pathname ; location.port ; location.protocol ; location.search ; window .URL .createObjectURL (url);
navigator 对象
history 对象 1 2 3 history.back (); history.forward (); history.go ();
获取元素位置和大小 offset
获取元素距离带有定位父元素的距离
1 2 3 4 5 6 7 8 对象名.offsetLeft ; 对象名.offsetTop ; 对象名.offsetWidth ; 对象名.offsetHeight ;
clien 1 2 3 4 5 6 7 8 对象名.clientLeft ; 对象名.clientTop ; 对象名.clientWidth ; 对象名.clientHeight ;
scrool
滚动
1 2 3 4 5 6 7 8 9 10 对象名.scroolLeft ; 对象名.scrollTop ; 对象名.scrollWidth ; 对象名.scrollHeight ; window .pageYOffset ;
立即执行函数
不需要调用 立马能够执行
click 延时解决方案
1 <meta name ="viewport" content ="user-scalable=no" />
利用 touch 事件自己封装
触摸记录当前时间 离开记录离开时间 如果小于 150ms 并且没有滑动 那么就是点击
fastclick 插件