webAPI
2021-01-24 12:14
YPE html>
标签:arc 清空表单内容 输入 核心 cpu fun 不包含 center items
graph TD
A[JS]
A -->|JS语法| D[ECMAScript]
A -->|页面文档对象模型| E[DOM]
A -->|浏览器对象模型| F[BOM]
API
应用程序编程接口,就是一个工具,以便于能轻松实现想要完成的功能
Web API
Web API是浏览器提供的一套操作浏览器功能和页面元素的API(DOM和BOM)
DOM
可以改变网页的内容、结构和样式
DOM树
文档:一个页面就是一个文档 document 元素:页面中的所有标签都是元素,element 节点:网页中的所有内容都是节点(标签、属性、文本、注释等),node
DOM把以上内容都看作是对象
DOM操作
获取元素
getElementById()
注意:
-
因为文档页面从上往下加载,所以先有标签,然后才能getElementById
-
参数是字符串,所以需要加引号
-
返回的是一个 element 对象
console.dir 可以打印返回的元素对象,更好的查看里面的属性和方法
getElementsByTagName()
-
参数是字符串,所以需要加引号d
-
得到的是对象的集合,可以用遍历来获取所有对象
-
得到的是动态的 例子: 获取ol里面的li
- 123一二三四五
- 123上山打老虎
- 123老虎有几只
- 123快来数一数
- 123一二三四五
getElementsByClassName()
类名选择器
querySelector()
HTML5新增的
返回指定选择器的第一个对象
- 15212
- 1641238
- 151232
- 1612348
querySelectorAll()
返回指定选择器的所有对象集合 用法和querySelector()一样
document.body
获取body元素
document.documentElement
获取html元素
事件基础
JavaScript使我们有能力创建动态页面,而事件是可以被JavaScript侦测到的行为。 网页中的每个元素都可以产生某些触发JavaScript的事件。
事件由三部分组成:
-
事件源 事件被触发的对象 比如按钮
-
事件类型 如何触发 比如鼠标点击、鼠标经过、键盘按下、滚动滚轮
-
事件处理程序 通过函数赋值的方式完成
事件都有:
鼠标事件 | 触发条件 |
---|---|
onclick | 鼠标点击左键触发 |
onmouseover | 鼠标经过触发 |
onmouseout | 鼠标离开触发 |
onfocus | 获得鼠标焦点触发 |
onblur | 失去鼠标焦点触发 |
onmousemove | 鼠标移动触发 |
onmouseup | 鼠标弹起触发 |
onmousedown | 鼠标按下触发 |
操作元素
JavaScript可以改变网页内容、结构和样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等。
element.innerText
-
从起始位置到终止位置的内容,但它去除Html标签,同时空格和换行也会去掉
-
innerText不识别HTML标签
-
可读写的,可以获取元素里面的内容
element.innerHTML
-
从起始位置到终止位置的全部内容,包括Html标签,同时保留空格和换行
-
能识别HTML标签
-
可读写的,可以获取元素里面的内容
修改表单属性
disabled 让某个表单被禁用,不能被点击, 用法:
btn.onclick = function () {
btn.disabled = true;
//或者写成下面这种
this.disabled = true;
//this指向的是时间函数的调用者
}
案例:仿京东显示密码,点击按钮将密码框显示为文本框,并可以查看密码明文
算法:利用一个flag变量,如果是1就切换为文本框,如果是0就切换为密码框
Document
修改样式属性
element.style
行内样式操作,修改元素样式,如果样式比较少或者功能简单的情况下使用 注意:
-
里面的属性是驼峰命名法
-
JS修改的是行内样式,权重比CSS的高
-
element.className
类名样式操作,适合样式比较多的情况下使用 修改了元素的类名
注意:这个方法直接修改了类名,也就是说会覆盖原来的类名,原来的就不生效了 如果想要保留原先的类名,这样做:
//假设first 是原来的类名,change是想加入的
this.className = ‘first change‘;
表单事件
获得焦点 onfocus 失去焦点 onblur
案例:京东搜索框,默认是“手机”两个字,当用户点击搜索框的时候,“手机”两个字消失,当输入文本之后,保持文本内容不变
分析:
-
如果获得焦点,判断里面是否是默认文字,如果是默认文字,就清空表单内容
-
如果失去焦点,判断表单是否为空,如果为空,则表单内容改为默认文字
-
获得焦点的时候,把文本框里的文字变黑
-
失去焦点的时候,文本框文字变浅
案例:密码提示框,选中的时候提示密码的长度和标准,失去焦点的时候,检查密码是否合乎规范
分析:
-
如果获得焦点,提示密码的长度和标准
-
如果失去焦点,检查密码是否合乎规范,如果不符合规范,就提示
-
因为改变的样式比较多,所以用className来修改样式
Document
操作元素小总结
graph LR
A[操作元素] -->B[操作元素内容]
B -->F[innerText]
B -->G[innerHTML]
A[操作元素] -->C[操作常见元素属性]
C -->H[src href title alt等 ]
A[操作元素] -->D[操作表单元素属性]
D -->I[ type value disabled等]
A[操作元素] -->E[操作元素样式属性]
E -->J[element.style]
E -->K[element.className]
排他思想
两层循环,先排除其他人,然后再设置自己的样式
案例:百度换肤效果
分析:
-
利用循环给一组元素注册点击事件
-
当鼠标经过一张图片,当前的页面背景换成经过的图片,鼠标移开之后,换回默认的
-
当点击了图片,当前的页面背景换成点击的图片
-
核心算法:把当前图片的src路径取过来,给body作为背景
?
Document
?
?
?
?
案例: 表单全选取消全选
分析:
-
点击上面全选复选框,下面所有的复选框都选中(全选)
-
再次点击全选复选框,下面所有的复选框都不中选(取消全选)
-
如果下面复选框全部选中,上面全选按钮就自动选中
-
如果下面复选框有一个没有选中,上面全选按钮就不选中
-
所有复选框一开始默认都没选中状态
-
下面复选框需要全部选中,上面全选才能选中做法:给下面所有复选框绑定点击事件,每次点击,都要循环查看下面所有的复选框是否有没选中的,如果有一个没选中的上面全选就不选中。
Document
商品
价格
iPhone Xs Max
10000
iPad Pro
5000
iWatch
3000
AirPods
1000
操作元素
获取属性值
-
element.属性 获取内置属性值(元素自带的属性)
-
element.getAttribute(‘属性‘) 主要获取自定义的属性(标准),我们定义的属性
设置属性值
-
element.属性 = ‘值‘;
-
element.setAttribute(‘属性‘, ‘值‘) 主要更改自定义的属性
移除属性值
-
element.removeAttribute(‘属性‘) 主要移除自定义的属性(标准)
TAB案例 (重点)
分析:
-
一个大盒子,里面上下两个小盒子
-
上面的模块,点击某一个之后,这个的背景色是红色,其余的是灰色(排他思想)
-
点击某一个之后,显示这个模块对应的内容,其他的隐藏,这个要写到点击事件&a
上一篇:Ajax之调用一言网站API接口
下一篇:C#异步编程看这篇就够了