一、认识什么是 WebAPI
1.什么是API
在我们了解 WebAPI 之前,我们要先知道什么是 API 。
所谓 API 本质上就是一些现成的函数 / 对象,让程序员直接拿来使用,方便开发。
2. WebAPI
JS 的学习大致分为下面的三大部分:
- ECMAScript: 基础语法部分
- DOM API: 操作页面结构
- BOM API: 操作浏览器
在上一篇文章中,我主要向大家介绍的是ECMAScript: 基础语法部分。而这里的 WebAPI 则包含了 DOM + BOM 这两点。
二、认识事件
1.事件的基本概念
所谓事件,就是针对用户的操作进行一些响应。
通俗的来讲,用户在浏览器中的动作就是 事件。
2.事件的三个要素
1.事件源: 哪一个元素产生的事件。
2.事件类型: 点击、双击、移动。。。
3.事件处理程序: 事件发生以后,需要执行那些代码。(这些代码都是事先设定好的)
针对上面的要素,这里用一段简单的 JS 代码来进行解释。
<button id="btn">点我一下</button>
<script>
var btn = document.getElementById('btn');
btn.onclick = function () {
alert("hello world");
}
</script>
这个代码还是比较好理解的,在这里就不进行运行展示了。
btn: 这个按钮就是事件源。
点击: 事件类型。
function: 这个匿名函数就是事件的处理程序。
btn.onclick = function () 这个操作就称为 注册 / 绑定事件
三、操作元素
1. innerHTML 属性
使用 innerHTML 属性就可以拿到 HTML语法 所表示的元素中的内容。
当修改其中的元素时,就会影响到界面的显示。
2. 获取 / 修改元素内容
代码示例
<div class="one">点击一下</div>
<script>javascript">
let div = document.querySelector('.one');
div.onclick = function(){
//读取到页面的内容
console.log(div.innerHTML);
//这里实现的是每次点击后再文段后加上一个 a
div.innerHTML += 'a';
}
</script>
运行结果
通过上述代码,我们就可以发现,innerHTML 属性可以抓取到当前所选中的标签中的内容(也就是 开始标签 和 结束标签 之间夹着的部分) 并可以对其进行修改。
3. 获取 / 修改 元素属性
html 标签的属性,也会映射到 js 的对象中。
代码示例
<img src="fengjing.jpg" alt="这是一张风景图" title="风景图">
<script>
let img = document.querySelector('img');
img.onclick = function(){
console.log(img.src);
console.log(img.title);
console.log(img.alt);
img.src = 'touxiang.png';
}
</script>
运行结果
点击之后
在这里 JS 代码就修改了 img 标签中的 src 属性。
4. 获取 / 修改 表单元素属性
- 修改 input 中的值
表单元素 (例如:input、textarea、select…) 在这些元素中,有着一些特别的属性,是普通标签没有的。
代码示例
<input type="text">
<button>点我一下</button>
<script>
let input = document.querySelector('input');
let button = document.querySelector('button');
button.onclick = function(){
//获取 input 中的 value 属性
console.log(input.value);
//抓取 input 中的信息
//这里出现的情况会是一个空白。。
console.log(input.innerHTML);
let value = parseInt(input.value);
value += 1;
input.value = value;
}
</script>
运行结果
- parseInt
这个关键字的作用是,将当前的元素从字符串的形式转化为数字的形式。- 运行结果中的标记
在运行结果中的空白行,就是 innerHTML 获取到的标签的内容,但是 input 是一个单标签,其中是没有内容的。 所以在这里显示的就是空白。
- 修改 input 中的 type 属性
这里的 type 属性有两种显示情况,一种为文本显示,一种是以密码的形式显示。
代码示例
<input type="text">
<button>点我一下</button>
<script>
let input = document.querySelector('input');
let button = document.querySelector('button');
button.onclick = function(){
if(input.type == 'text'){
input.type = 'password';
//修改 button 标签中的文字
button.innerHTML = '显示密码';
}else{
input.type = 'text';
button.innerHTML = '隐藏密码';
}
}
</script>
运行结果
5. 获取 / 修改 样式属性
- 修改内联样式
这里我们修改的是 style 属性的值。
代码示例
<div style="font-size: 20px;">这是一个div点击之后会放大</div>
<script>
let div = document.querySelector('div');
//先获取当前的字体大小
console.log(div.style.fontSize)
div.onclick = function(){
//先获取到当前的字体大小
//将当前的像素转换成 int 类型便于相加
let = fontSize = parseInt(div.style.fontSize);
fontSize += 10;
//设置字体还需要加上 px 这个单位
div.style.fontSize = fontSize + 'px';
console.log(div.style.fontSize);
}
</script>
运行结果
在上述代码中,每次点击都会将文字放大 10px.
- 修改元素应用的 CSS 类名
这里简单实现一个 夜间模式 的切换。
代码示例
<div id="one" class="light" style="font-size: 20px; height: 500px;">这是一个 div 点击之后变化</div>
<style>
.light{
/* 日间模式 */
color:rgb(54, 53, 53);
background-color: #fff;
}
.dark{
/* 夜间模式 */
color: white;
background-color: rgb(54, 53, 53);
}
</style>
<script>
//获取当前 id 为 one 的这个 div
let div = document.querySelector('#one');
div.onclick = function(){
// 点击div切换模式
if(div.className == 'dark'){
div.className = 'light';
}else{
div.className = 'dark';
}
}
</script>
运行结果
6. 创建 / 删除元素
- 创建元素
要实现创建元素,需要有下面的两步操作:
首先,创建出一个元素。
然后,将这个元素放进 dom 树中。
代码示例
<!-- 这里先创建出一个标签 -->
<ul>
<li>11</li>
<li>22</li>
</ul>
<script>
//此处先选中要修改的标签名称
let ul = document.querySelector('ul');
//添加多个 li 标签
for(let n = 3; n < 10;n++){
let li = document.createElement('li');
li.innerHTML = n+ '' +n;
//将元素添加到末尾
ul.appendChild(li);
}
</script>
运行结果
简单解释上面元素创建的过程:
观察上面的代码,可以将创建大致分为三部分:
- 首先,使用 document.querySelector 选中要修改的元素
- 第二,使用 document.createElement 来创建其中想要创建的内容。
- 第三,使用 appendChild 将元素添加到子元素的末尾。(当然,这里还可以使用 insertBefore 关键字,将元素插入到想插入的位置)
insertBefore 的使用语法
insertBefore (新建的元素名称,选中的标签名称.children[这里和数组类似,填对应的数字])
ul.insertBefore(li,ul.children[1]);(上面代码的修改)
- 删除元素
<ul>
<li>11</li>
<li>22</li>
</ul>
<script>
//此处先选中要修改的标签名称
let ul = document.querySelector('ul');
//添加多个 li 标签
for(let n = 3; n < 10;n++){
let li = document.createElement('li');
li.innerHTML = n+ '' +n;
//将元素添加到末尾
ul.appendChild(li);
//删除元素
//在 li 标签下的全部元素中,选出下标为 2 的元素
let todelete = document.querySelectorAll('li')[2];
console.log(todelete);
//移除选中的元素
ul.removeChild(todelete);
}
</script>
运行结果
删除元素比较简单,使用的关键字为 removeChild。
到此,与 WebAPI 有关的简单知识就已经介绍的差不多了。在下一篇文章中,本人会以两个简单的案例来总和使用这里的操作。