js提升

JS提升

  1. Web APIs和JS基础关联性

 

API: 功能实现的接口

Web API: 浏览器提高的一套操作浏览器功能页面元素的API(BOM和DOM

MDN详细API:https://developer.mozilla.org/zh-CN/docs/Web/API (webapi常用的API接口)

 

DOM

  1. 文档对象模型, 处理可扩展标记语言(HTML, XML)的标准编程接口,W3C定义了一系列DOM接口,通过接口可以改变网页内容,结构和样式。

 

 

  1. 获取对象

 

  1. . getElementByld( )

 

 

  1. . getElementsByTagName()

 

  1. 通过HTML5新增方法(ie6,7,8不能使用, 要IE9以上)

  document.getElementsByClassName(‘类名’);

 

  1. . 获取特殊元素(body, html)

获取body元素

document.body    //返回body元素对象

获取html元素

Document.documentElement  //返回html元素对象

 

 

  1. 事件概述

事件三要素

 

常见的鼠标事件

 

  1. 操作元素

1). 改变元素内容

Element.innerText  他会去除html标签,同时会去除空格与换行

比如<strong>,会直接显示标签  非标准,

Element.innerHTML  保留html标签 同时保留空格与换行  标准 (多用)

 

  1. . 常用元素的属性操作

  innerText,  innerHtml改变元素内容

  src, href, id, alt, title

 

 

3). 密码输入时眼睛例子

 

4). 样式属性

驼峰命名法

 

 

当样式过多的时候用element.className

即当点击一个按钮时元素变成另一个状态, 我们可以写一个改变后的change类, 当点击时调用这个类

Test.οnclick=function(){

this.className=’change’;

}

如果想要在保留原来的类名的基础上加上新的类, 则:

this.className=’change first’ 

 

 

5). 关闭二维码操作

display:none;  隐藏元素

display: block;   显示元素

 

6). 精灵图制作

  1. 首先精灵图排列要有规律
  2. 利用for循环,修改精灵图片的背景位置background-position
  3. 分析规律

例子

 

 

  1. . 获得焦点onfocus 失去焦点onblur

  

 

  1. . 密码输入

 

 

8). 排他思想

 

 

 

  1. . 鼠标经过

 鼠标经过onmouseover  鼠标离开onmouseout

 当鼠标经过tr行,当前的行变背景颜色,鼠标离开去掉当前的背景颜色

  th行不需要变色,td需要变色

 

 

  1. . 全选按钮和取消全选

  让所有复选框的checked属性(选中状态)跟随全选按钮即可

 

 

  1. DOM获取元素的方式
  1. 利用DOM提供的方法获取元素

   document.getElementById();

   document.getElementByTagName();

   document.querySelector();

缺点:逻辑性不强 繁琐

 

  1. 利用节点的层级关系获取元素

 nodeType(节点类型):元素节点 属性节点 文本节点

文本节点:文字 空格 换行

nodeName(节点名称)

nodeValue(节点值)

  1. 父级节点:node.childNodes
  2. 子节点:Node.children;  Node.firstchild; Node.lastchild;

Node.firstElementChild 子元素节点 找不到元素返回null ie9以上支持 Node.lastElementChild   Node.children[0]; 第一个子元素

  1. 下拉菜单

 

  1. 兄弟节点
  1. node.nextSibling 下一个兄弟节点 包含元素节点或文本节点,换行 node.previousSibling 上一个兄弟节点 同上
  2. node.nextElementSibling 下一个元素兄弟节点 ie9以上支持

   node.previousElementSibling

  1. 创建节点  (客户发布文章下面即可看到发布文章)

  document.createElement(‘tagName’) 创建节点

document.appendChild()添加节点

document.insertBefore(child, 指定元素);

 

 

 

  1. 删除节点

  node.removeChild(child)   node必须是child的父亲

node.removeChild()方法从DOM中删除一个子节点, 返回删除的节点  例:node.removeChild(ul.children[0]);

<a href=”javascript:;”>阻止链接跳转

 

  1. 复制节点(克隆节点)

  Node.cloneNode();

 

  注意: 1. 括号参数为空或者false,则浅拷贝,即克隆复制节点本身,不克隆里面的子节点

  1. 括号为true深拷贝 复制标签复制里面的内容

 

for(var k in obj){}   这个k得到的是属性名  obj[k]=属性值

 

  1. 动态表格数据

 

 

  1. 三种动态创建元素的区别
  1. document.write(‘<div>a</div>’);

当文档流执行完,它会导致页面全部重绘

window.οnlοad=function(){}    当页面加载完

  1. innerHTML创建元素

  当创建多个元素时效率更高,但是不要采取拼接字符串的形式,采取数组形式拼接, inn.innerHTML += ‘a’  是采取拼接字符串的形式,十分耗时

Arr.join(‘’)将数组转换为字符串

  1. createElement(‘a’)  创建多个元素效率稍微低一点

 

  

 

  1. DOM重点核心

  文档对象模型, 是w3c组织推荐的处理可扩展标记语言(HTML,XML)的标准编程接口

W3c已经定义了一系列的DOM接口,通过这些接口可以改变网页的内容,结构和样式

  获取的DOM元素是一个对象

Dom操作主要针对元素的操作,有创建,增,删,改, 查,属性操作,事件操作。

  1. 创建
  1. document.write(‘’);
  2. innerHTML
  3. createElement(‘’)
  1. appendChild();  从后面添加
  2. insertBefore();

 

3.删removeChild();

4. 改

   主要修改dom的元素属性,dom元素的内容,属性,表单的值等

  1. 修改元素属性:src, href, title等
  2. 修改普通元素内容:innerHTML, innerText
  3. 修改表单元素:value, type, disabled等
  4. 修改元素样式:style, className

 

5.查

主要获取查询dom元素

  1. DOM提供的API方法:getElementById, getElementsByTagName(古老用法不推荐)
  2. H5提供的新方法:querySeletor, querySelectorAll  提倡
  3. 利用节点操作获取元素:父(parentNode),子(children),兄(previousElementSibling, nextElementSibling)提倡

 

6.属性操作

 针对自定义属性

  1. setAttribute:设置dom的属性值
  2. getAttribute:得到dom的属性值
  3. removeAttribute移除属性

 

7.事件操作

 

6.事件高级

  1. 注册事件:给元素添加事件,称为注册事件或者绑定事件

注册事件有两种方式:传统方式和方法监听注册方式

 

1.2 addEventListener事件监听方式

   eventTarget.addEventListener(type, listener[, useCapture])

 

1.3 attachEvent

   尽量不用

 

 

1.4 注册事件兼容性解决方案

 

  1. 删除事件(解绑事件)
  1. 传统解绑方式: eventTarget.οnclick=null;
  2. 方法监听解绑事件:
  1. x.removeEventListener(type,listener[,useCapture]);
  2. x.detachEvent(type,listener[,useCapture]);  不推荐

 

 

  1. DOM事件流

 事件流描述的是从页面中接收事件的顺序

 事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流

DOM事件流分为3个阶段:

1.捕获阶段    2.当前目标阶段    3. 冒泡阶段

 

 

 

 

  1. 事件对象

7.1 function(event){}:  

1. event就是一个事件对象,当形参来看

2.事件对象只有有了事件才会存在,它是系统给我们自动创建的,不需要我们传递参数。

  1. 事件对象是我们事件的一系列相关数据的集合
  2. 这个事件对象我们可以自己命名
  3. 事件对象有兼容性问题, ie678通过window.event

   兼容性处理方法:e=e||window.event

7.2 常见属性和方法

 

e.target点击了哪个元素就返回哪个

this绑定了哪个元素就返回哪个  e.currentTarget与this相同

 

阻止冒泡(解决兼容性问题)

 

7.3事件委托(代理,委派)

事件委托也称事件代理,在jq里面称为事件委派

事件委托的原理:不要给每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利用冒泡原理影响至每个子节点。

 

7.4 鼠标事件

1. 禁止鼠标右键菜单

contextmenu主要控制应该何时显示上下文菜单,主要用于程序员取消默认的上下文菜单。

2.禁止选中文字(selectstart开始选中)

  // 禁止鼠标右键菜单

        document.addEventListener('contextmenu'function(e) {

            e.preventDefault();

        });

        // 禁止选中     document.addEventListener('selectstar'function(e) {

3.鼠标事件对象

鼠标对象:MouseEvent

键盘对象: KeyboardEvent

 

 

 

4.鼠标移动事件

  Mousemove:鼠标要移动距离,并且不占位置,用绝对定位即可。

 核心原理:每次鼠标移动,我们要获取鼠标移动的最新位置,把这个位置的x,y作为图片的top和left值, 就可以移动图片。

 i

 

 

6.常用键盘事件

按下的时候触发, 不能识别功能键, 比如ctrl shift左右箭头

        keydown按键按下的时候触发, 能识别功能键, 比如ctrl shift左右箭头

        三个事件的执行顺序: keydown--keypress--keyup

 

 

 

7.键盘事件对象

keyCode 得到键盘键的ASCII码值

document.addEventListener('keyup'function(e) {

            console.log(e.keyCode);

            // 1.我们的keyup和keydown事件不区分字母大小写, a和A得到的都是65

            // 2.我们的keypress事件区分字母大小写,a 97 A 65

        })

 

 

 

 

 

BOM浏览器对象模型

 

  1. BOM

  BOM即浏览器对象模型, 它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。

  BOM由一系列对象构成,并且每个对象都提供了方法和属性

  BOM缺乏标准,JS语法的标准化组织是ECMA, DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。

 

 

  1. window对象的常见事件
    1. 窗口加载事件

Window.οnlοad=funcation(){}

或者window.addEventListener(“load”,funcation(){}})

window.addEventListener(‘DOMContentLoaded’, function(){})

 

 <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <script>

        window.onload = function() {

            var btn = document.querySelector('button');

            btn.addEventListener('click'function() {

                alert('惦记我')

            });

        }

    </script>

提倡一下这种方法:

 

 

    1. 调节窗口大小事件

Window.οnresize=funcation(){}

Window.addEventListener(“resize”, function(){});

 

 

 

 

 

 

 

 

  1. 两种定时器

  setTimeout();  window.setTimeout(调用函数, [延迟的毫秒数]);

  setTimeout()这个调用我们称为回调函数callback

 

 

 

 

 

终止定时器

window.clearTimeout(timeoutID);

 

 setInterval(回调函数,[间隔的毫秒数]);

这个方法重复调用一个函数,每隔这个时间,就去调用一次回调函数, 永不停息, 不断调用。

 

 

 

 

 

 

 

 

 

 

 

 

 

验证码倒计时状态

 

 

 

 

 

 

 

  1. JS执行队列
    1. JS是单线程

Js是单线程,同一时间只能做一件事,其他任务等着排队。

现在的JS允许异步。

    1. 同步与异步

同步是执行完这个任务再执行下一个任务, 且同步任务都是在主线程上执行,形成一个执行线。

异步是在做一件事的时候可以去处理其他事情。

 

 

 

    1. JS执行机制

 

 

 

  1. Location对象
    1. Location

 

5.2 URL

 

5.3 location属性

 

5.4 location 对象方法

 

点击进行页面跳转

 

Location.assign记录浏览历史,可以实现后退功能

Location.replace不记录浏览历史,不可以实现后退功能

 

定时自动跳转页面

 

不同页面之间的相互跳转(例如用户登录后跳转到另一个页面会显示登录的用户名, xx)

 

5.4 location对象的方法

 

 

  1. navigator对象

 

 

  1. history对象

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值