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#异步编程看这篇就够了