API的概念:
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
Web API**的概念 :**
浏览器提供的一套操作浏览器功能和页面元素的API(BOM和DOM)
此处的Web API特指浏览器提供的API(一组方法),Web API在后面的课程中有其它含义
JS**组成:**
1. ** ECMAScript - JavaScript的核心**
定义了javascript的语法规范
JavaScript**的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关**
2.BOM - 浏览器对象模型
一套操作浏览器功能的API
通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等
- DOM - 文档对象模型
一套操作页面元素的API
DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作
DOM 学习
学习目标:1. 学会找DOM对象 2. 学会给DOM对象注册事件 3. 修改DOM对象的属性
什么是DOM ?
Document Object Model 文档对象模型
- 文档对象模型
HTML页面的所有的内容,包括标签、节点、注释、属性等,在JS的DOM中,都存在一个一个的对象与之对应。因此当我们想要操作这些HTML的内容时,只需要操作这些对象即可。
节点:页面中所有的内容,包括标签、节点、注释、树形都被封装成了对象,我们把这些对象叫做节点。
元素:我们最常操作的是标签节点,也叫元素。
- 文档树模型
HTML结构是一个树形结构,同样的,这些对应的对象也是一个树形的结构,树形结构的好处是能够非常容易找到某个节点的子节点、父节点、兄弟节点。
子节点:child
兄弟节点:sibling
父节点:parent
- API:Application Programming Interface:应用程序编程接口,其实就是一大堆的方法,我们可以把API看成是工具。做不同的事情需要不同的工具。
做饭需要一套做饭的工具:锅碗瓢盆
打仗需要一套打仗的工具:刀枪剑戟
找对象需一套找对象的工具:钱权颜缘 + 车房钱权
DOM:用来操作页面元素的一套工具。
BOM:用来操作浏览器一些行为的一套工具。
- XML:XML(Extensible Markup Language:可扩展性标记语言,通常用于配置文件,或者和json一样用于数据交互。
1 | <name>张三</name> |
DOM初体验
想要操作DOM,首先需要获取到DOM对象
根据id 获取元素
var element = document.getElementById(‘box’);
document:指的是整个html页面,在DOM中被封装成了一个对象,就是document对象
getElementById:通过id获取元素
参数是一个字符串,即id
返回值是一个元素,即一个对象,标签中存在的属性,在这个元素中也有属性与之一一对应。
如何打印一个对象
Console.log(): 以标签的形式打印一个对象
Console.dir(): 以对象的形式打印一个对象
注册事件
1.JavaScript和HTML之间的交互是通过事件来实现的。
2. 事件就是文档或者浏览器窗口发生的一些特定的交互瞬间。
3. JavaScript是一门事件驱动的脚本语言。
事件三要素
事件源:触发事件的元素
时间名称:触发事件名称
事件处理函数: 触发事件时调用的函数
注册事件的两种方式
。行内式注册事件
例如<img src =”images/1.jpg” alt = “描述”id = “img” onclick = ‘changPic()’>
。内嵌式注册事件
` var img = document.getElementById(‘img’);
Img.onclick= function() {
Img.src= ‘images/2.jpg;
}`
案例显示与隐藏
1 | <script> |
1 |
案例 【图片轮流切换】
1 |
|
给a 标签注册事件
returnfalse 可以阻止页面跳转
案例【给a标签注册事件】
1 |
|
Javascript : void(0) 的作用
- javascript:是伪协议,表示url的内容通过javascript执行。
- void(0)表示不作任何操作,这样会防止链接跳转到其他页面。
- 让页面不跳转,
JavaScript:void(0)
是最通用的方式。
元素的属性
1 .标签属性
在标签中存在的属性,在DOM对象中同样存在,使用JS代码可以改变标签的相关属性。
案例美女相册
1 |
|
除了常见属性以外,标签中还存在一些特殊的属性。只要设置了这些属性,无论有没有值,都会起作用。例如:disabled、checked和selected属性。
案例 禁用文本输入框
1 |
|
案例 下拉列表
1 |
|
自定义属性
<div id = ‘box’ aa = ‘1’></div>
在html 中给标签添加额外的属性
自定义的标签属性通过DOM使用点语法来获取
示例 代码
1 |
|
HTML和css 的常见的使用
1 |
|
查找DOM 对象
- 根据ID获取元素
var box =document.getElementById("box")
; //根据id名获取对应的元素
注意:只有document才有getElementById()方法,其它元素没有这个方法。
var father= document.getElementById("father");
var son =father.getElementsByTagName("div")[0]
; //允许
var son =father.getElementById("son");
//不允许,只有document能够调用getElementById方法,其它元素不可以调用getElementById方法。
- 根据类名获取元素
var elements =document.getElementsByClassName("box")
; //根据类名获取对应的元素
- 根据标签名获取元素
var links = document.getElementsByTagName(“a”)
1.根据标签名获取元素,返回的是一个伪数组
2.伪数组:可以跟数组一样进行遍历,但是不能使用数组的方法。
3.this的使用,谁调用,指向谁
- 其他获取元素的方式
通过name属性获取元素(不建议使用)
document.getElementsByName("name");
通过类名获取元素
document.getElementsByClassName("classname");
通过css选择器获取元素(一个元素)
document.querySelector("#box");
document.querySelector(".demo");
document.querySelector("div");
通过css选择器获取元素(返回一个伪数组,多个)
document.querySelectorAll("#box);
1 |
|
让点击的元素高亮显示
1 |
|
【排他思想】
1 |
|
Tab栏练习
1 |
|
【标签内容】innerText 和innerHTML属性都是用来获取和设置标签的内容的。但是二者有区别。
l InnerHTML 可以用于获取和设置标签的所有内容 包括标签和文本内容
//innerHTML:内部的HTML
// 获取标签内容的时候,不管标签还是文本,都能获取到
// innerHTML设置内容的时候,覆盖原来内容,标签也能生效,浏览器能解析这个标签。
1 |
|
l InnerText 可以用于获取和设置标签的文本内容,会丢弃掉标签
//innerText:内部 文本
// 获取标签内容的时候,只会获取文本,标签扔掉了
// 设置标签内容的时候,覆盖原来内容,对标签进行转义(目的:把标签直接当文本来用)
二者的区别:
- innerHTML是W3C的标准属性,而innerText是IE提出来的属性,存在兼容性问题。因此更加推荐大家使用innerHTML。
- innerText的作用:防止xss攻击
l InnerText的兼容性问题
1 | l <!DOCTYPE html> |
【样式操作】标签不仅可以通过class属性操作样式,还可以通过style属性操作样。同样的DOM对象可以通过className操作样式,也可以通过style属性操作样
//1 style属性是一个对象
//2 style这个对象中属性值都是字符串格式
//3 标签中style属性有哪些样式名,在style这个对象中就有对应的属性名。
//4 标签中有一些属性带了-,比如background-color,到了style对象中,变成了驼峰命名法,backgroundColor(因为-在js中不是一个合法的标识符)
//5 DOM中的style属性只能获取和设置行内样式,在类样式中定义的样式通过style获取不到。
【关于body】//1.document.body : body比较常用,并且在页面中时唯一的,因此可以使用document.body直接获取
1 |
|