js基础和Web APIs两个阶段的关联性
1.js基础:ECMAScript
2.Web API是:DOM和BOM
3.Web APIs 是 JS 的应用,大量使用 JS 基础语法做交互效果
API 和 Web API
API(应用程序编程接口)是一些预先定义的函数,提供应用程序与开发人员,基于某软件或硬件,得以访问一组例程的能力,而又无需访问源码。
API : 接口,工具,方法/属性
Web API 是浏览器提供的一套操作浏览器功能和页面元素的 API ( BOM 和 DOM )。
DOM简介
1.文档对象模型 DOM,是 W3C 组织推荐的,处理可扩展标记语言(HTML或者XML)的标准编程接口。
2.文档:一个页面就是一个文档,DOM 中使用 document 表示
3.元素:页面中的所有标签都是元素,DOM 中使用 element 表示
4.节点:网页中的所有内容都是节点(标签、属性、文本、注释等),DOM 中使用 node 表示
总结:
DOM: 将html文档,转换为了一个document对象,并且封装了各种各样的属性和方法。
我们通过这些属性和方法来操作html文档(改变网页内容,结构和样式)
DOM操作HTML文档,主要就是操作元素。首先我们先来学习如何获取元素。
DOM获取页面元素的方式:
1.根据 ID 获取
2.根据标签名获取
3.通过 HTML5 新增的方法获取
4.特殊元素获取
document.getElementById('id');获取带有 ID 元素的对象。
document.getElementById('time'); // id='time'
document.getElementsByTagName('标签名'); 获取某类标签元素,返回对象集合。
var lis = document.getElementsByTagName('li'); //标签选择器
console.log(lis); //元素对象的集合;伪数组
console.log(lis[0]);
遍历里面的元素对象
for (var i = 0; i < lis.length; i++) {
console.log(lis[i]);
}
变量名.getElementsByTagName() 可以得到这个元素里面的某些标签
var nav = document.getElementById('nav'); // 这个获得nav 元素
var navLis = nav.getElementsByTagName('li');
console.log(navLis);
document.getElementsByClassName(‘类名’);// 根据类名返回元素对象集合
var boxs = document.getElementsByClassName('box'); //所有 类名class="box"
使用 console.dir() 以目录结构形式打印返回的元素对象,更好的查看对象的属性和方法。
总结: DOM提供的获取元素的方法,都是父亲获取后代(子元素/孙元素)
document: html文档顶级对象,html所有标签对象的祖宗;
DOM提供的获取元素的方法,不仅可以通过document调用,也可以通过普通元素对象调用
H5新增获取元素方式:
document.querySelector('选择器'); // 根据指定选择器返回第一个元素对象
var firstBox = document.querySelector('.box'); //类名是.box的第一个元素
var nav = document.querySelector('#nav'); //id选择器
var li = document.querySelector('li'); //标签选择器 第一个标签
document.querySelectorAll('选择器'); // 返回指定选择器,所有元素对象集合
var allBox = document.querySelectorAll('.box'); //所有的 类名 class="box"
var lis = document.querySelectorAll('li'); //所有的li
获取body和html元素
var bodyele = doucumnet.body; // 返回body元素对象
var htmlele = document.documentElement; // 返回html元素对象
事件三要素:
网页中的每个元素,都可以产生某些,可以触发 JavaScript 的事件;例如,我们可以在用户点击某按钮时,产生一个 事件,然后去执行某些操作。
事件三要素:
1. 事件源 (谁,事件被触发的对象)
2. 事件类型 (如何触发 什么事件 鼠标点击 还是经过)
3. 事件处理程序 (做啥 通过一个函数赋值的方式完成)
执行事件步骤:
1. 获取事件源
2. 绑定事件:btn.onclick
3. 添加事件处理程序(采取函数赋值形式)
var btn = document.getElementById('btn');
btn.onclick = function() {
alert('秋香姐');
}
onclick 是一个方法,事件:On:当;
当什么情况发生时,执行什么逻辑;当鼠标点击事件发生时,执行匿名函数调用。
常见的鼠标事件:
1. onclick 鼠标点击左键触发
2. onmouseover 鼠标经过触发
3. onmouseout 鼠标离开触发
4. onfocus 获得鼠标焦点触发
5. onblur 失去鼠标焦点触发
6. onmousemove 鼠标移动触发
7. onmouseup 鼠标弹起触发
8. onmousedown 鼠标按下触发
显示当前系统时间案例:
修改元素内容
元素innerText :内部文本
元素.innerHTML :内部标签+文本
元素对象的属性、方法,都支持获取,修改
innerText和innerHTML的区别
innerText 去除空格和换行 不识别html标签 非标准
innerHTML 保留空格和换行的 识别html标签 W3C标准
var div = document.querySelector('div');
div.innerHTML = '今天是: 2019'; //今天是:2019
操作、修改表单属性:
type、value、checked、selected、disabled
html标签中的属性值 , 如果是可用,不可用,两种可选状态: checked、selected、disabled
元素对象中的属性值,boolean,true,false。
btn.disabled = true;
在对象的方法中 使用this:this 指向的是,事件函数的调用者 btn
样式属性:
元素.style 行内样式操作;JS修改style样式操作,产生的是行内样式,CSS权重比较高
元素.className 类名样式操作 //只要是css里的style属性都可以跟???
Style里面的属性(大小、颜色、位置),采取驼峰命名法:fontSize、 backgroundColor
var div = document.querySelector('div');
//getElementsByTagName返回的是集合,只有id和querySelector是一个???
div.onclick = function() {
this.style.backgroundColor = 'purple';
this.style.width = '250px';
}