初识WebAPI

133 阅读6分钟

WebAPI

web - 网站、网页

API - application programing interface - 应用程序编程接口 - 接口其实是在编程的一个借用现实生活的接口概念的东西 —— 以前有一些大佬,把一些对象封装好了,对象有很多的属性和方法,我们只需要按照人家给的使用说明书,进行使用就行 —— 应用编程接口 就是一堆人家封装好的代码,我们需要按照人家给定的参数进行调用

接口 - 约定好的规格和参数的数据交互的手段

这个阶段学习什么 ? 就是学人家封装好的方法和属性,学习这些东西有什么用,怎么用

js的组成

ECMAScript - es - 人家规定的一个标准-约定js的语法

DOM - 文档对象模型 - 把文档(页面)看成是一个对象,里面有很多操作页面元素的方法和属性

BOM - 浏览器对象模型 - 把浏览器看成一个对象,有很多方法和属性,进行操作浏览

DOM - 文档对象模型

DOM - 就是把文档看成一个对象

分享一个小案例的思路(实现开关灯)

分析思路:

1.在点击开灯的时候,让页面变白

2.在点击关灯的时候,让页面变黑

3.如何才能让页面变白变黑

只需要修改body的背景颜色就行

如何改body的背景颜色 - 学会操作body的样式

点击按钮默认是没有反应的,怎么用才能让按钮点击了有反应?

步骤:

1.获取两个按钮

2.给两个按钮注册点击事件

3.修改body的背景颜色

小技巧:

1.获取body,不需要根据任何条件获取,只需要 通过 document.body 获取就行

2.如果想要去掉行内样式,可以把行内样式设置为空字符串

3.不要在事件处理程序里面获取元素,这样降低执行效率,以及写代码会更加复杂

DOM里面经常干的事情:

1.获取元素

2.告诉它在被操作之后有什么反应 - 注册事件

3.反应该如何去做 - 在事件处理程序里面写代码

获取元素

document.querySelector(‘选择器’)
该方法的返回值是一个对象,如果找不到对应的元素,则返回null

小补充:

null和undefined的区别

null表示对象空,undefined表示值空

根据标签名获取

document.querySelectorAll(‘选择器’)

返回值是一个伪数组,注意: 不管页面上有多少个同名的元素,都是返回伪数组,不要以为页面中只有1个,就会返回一个元素对象给你!!!

如果要操作里面的每个元素,需要使用索引先获取出来

注册事件

事件就是浏览器和用户交互的一种手段,这个手段是基于一种 触发-响应 的机制

事件有很多,可以是点击,鼠标悬停,按键按下...

要使用事件,需要先注册事件,就是告诉元素,在它被操作(触发)之后,有什么反应(响应)

固定语法

事件源.on事件类型 = 事件处理程序

翻译成能看懂的:
元素.on交互 = function(){}

例如:
var btn = document.getElementById('btn');
btn.onclick = function(){ alert() }
事件源.addEventListener('事件类型',事件处理程序)

只要触发了对应的事件,事件处理程序里面的代码就会执行,意思是: 函数会在触发事件的时候被调用

使用style属性操作行内样式

style行内样式,是标签的一个属性,如果把标签看成是一个对象,style也是标签对象的一个属性,这个属性管理着所有的行内样式。

获取行内样式

固定语法:

元素.style.css样式 
例如:
box.style.backgroundColor

注意:

1.该方式只能获取行内样式,无法获取内嵌样式

2.属性名后面要把原本的css样式的属性名里面的横向去掉,然后改成驼峰名的方式,比如: background-color,需要改成 backgroundColor

修改行内样式

元素.style.css样式 = 新的值;
例如
box.style.backgroundColor = 'yellow';

WebAPI阶段的调试错误

经常可能有效果出不来的情况,如果报错还是按照报错先处理错误

如果不报错,还是需要断点调试 —— 哪里不对点哪里

注册事件的时候,如果触发了事件没有反应,就只该事件的函数内部打一个断点,触发执行

如果注册事件的函数,触发了事件还是没反应 —— 多半 就是 注册事件的问题

注册事件会出什么问题呢? 要么事件源有问题,要么事件的类型有问题,就在注册事件的地方打断点,然后刷新

检查事件源和事件类型,肯定有一个写错了,如果是事件源,就把事件源改对

如果是事件类型的单词写错 —— 删除重新写

只要修改了之后,再次刷新触发,如果函数执行了,证明注册事件就没问题

注意: 如果你给的颜色单词不对,我们的css是不认的

常见错误

image-20191110105301426.png

无法设置null的属性 'onclck'

证明在某一行,使用了一个null这个对象,点了onclck属性,给它赋值了

找到对象是null的原因,解决掉

如果是注册事件出这个错,通常就是获取的元素的条件写错单词了,需要复制粘贴不要手写

操作元素对象的属性

操作元素的标准属性

只需要通过元素对象,直接点来访问和操作就行

访问

元素对象.属性名
例如:
box.id
box.className
box.title

注意: class属性,不能使用class这个键访问,需要使用className访问,原因是class在es5里面是保留字,在es6里面是关键字,为了避免命名冲突,使用className来代替

修改

元素对象.属性名 = 新的值:
例如:
img.src = './images/05.jpg';

操作自定义属性

如果是以前,使用了一套比较麻烦的API

元素.getAttribute(属性名)  -  根据属性名获取属性值
元素.setAttribute(属性名,属性值)  --  根据属性名设置属性值
元素.removeAttribute(属性名)  -- 删除某个属性

h5里面推出一套比较简单一些的

<div data-id=""  data-abc="" data-src="">
  
</div>

要求所有的自定义属性以data-开头

这些属性就可以从 元素.dataset 这个对象里面直接获取

div.dataset.id
div.dataset.abc
div.dataset.src

let关键字

作用是:

声明一个变量

let 变量名 = 值;

和var有什么不同

1.声明的变量不会提升

2.声明的变量,如果在for或者是if等等这种块级结构里面,会形成块级作用域

如果在全局下声明,依然是全局,如果是在函数内声明,依然是局部

以后,能用let就不用var了

两个事件

获得焦点 —— 会在输入框得到可以输入的光标的时候触发

元素.onfocus = function(){}

失去焦点 —— 会在光标失去的时候,无法输入的时候触发

元素.onblur = funciton(){}