let oDivs = document.getElementsByTagName("div");
console.log(oDivs);
5.通过选择器获取 querySelector只会返回根据指定选择器找到的第一个元素
// let oDiv = document.querySelector("#box");
// let oDiv = document.querySelector(".father");
let oDiv = document.querySelector("div>form");
console.log(oDiv);
JavaScript发展史
1.1 Javascript的起源
1.1.1 简介
1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断。如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。
作者
因此,网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。工程师Brendan Eich负责开发这种新语言。他觉得,没必要设计得很复杂,这种语言只要能够完成一些简单操作就够了,比如判断用户有没有填写表单。
![](https://cdn.nlark.com/yuque/0/2020/jpeg/247789/1581149787532-216cf989-98e1-4aae-b3ee-73b50d5d7fc0.jpeg#align=left&display=inline&height=314&originHeight=314&originWidth=249&size=0&status=done&style=none&width=249)
Brendan Eich。1995年4月,网景公司录用了他。
Brendan Eich的主要方向和兴趣是函数式编程,网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。
仅仅一个月之后,1995年5月,网景公司做出决策,未来的网页脚本语言必须”看上去与Java足够相似”,但是比Java简单,使得非专业的网页作者也能很快上手。这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。
Brendan Eich被指定为这种”简化版Java语言”的设计师。
但是,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。
由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?
设计思想
总的来说,他的设计思路是这样的:
所以,Javascript语言实际上是两种语言风格的混合产物—-(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。
小结
JavaScript是
Netscape
公司于Sun
公司合作开发的。在“javascript”出现之前,Web浏览器不过是一种能够显示超文本文档的软件的基础部分。而在“javascript”出现之后,网页的内容不再局限于枯燥的文本,他们的可交互性得到了显著的改善。Javascript的第一个版本,即javaScript1.0版本,出现在1995年推出的Netscape Navigatior住在这浏览器市场,微软的IE浏览器则扮演这追赶者的角色。微软在推出IE 3的时候发布了自己的VBScript语言并以JScript为名发布了javaScript的一个版本,一次很快跟上了Netscape的步伐。
注意: javascript 与 java的区别
JavaScript是一种脚本语言,JavaScript脚本通常只能通过Web浏览器去完成某种操作而不是像普通意义上的程序那样可以独立运行。因为需要有Web浏览器进行解释和执行,所以JavaScript脚本不像Java和C++等编译型程序设计语言那样用途广泛。不过,这种相对的简单性也正是JavaScript的长处:因为比较容易学习和掌握,所以JavaScript很受那些本身不是程序员,但希望能够通过简单的剪贴操作把脚本嵌入他们的现有网页中的普通用户们的欢迎。
JavaScript还向程序员提供了一种操作Web浏览器的手段。例如
拓展阅读:
1.1.2 发展时间轴
1995年5月,Brendan Eich只用了10天,就设计完成了这种语言的第一版。为了保持简单,这种脚本语言缺少一些关键的功能,比如块级作用域、模块、子类型等。
最初名字叫做 Mocha,1995年9月改为LiveScript。12月,Netscape公司与Sun公司(Java语言的发明者和所有者)达成协议,Sun允许将这种语言叫做JavaScript。
1996年8月,微软模仿JavaScript开发了一种相近的语言,取名为JScript(JavaScript是Netscape的注册商标,微软不能用),首先内置于IE 3.0。
1996年11月,Netscape公司决定将JavaScript提交给国际标准化组织ECMA(European Computer Manufacturers Association),希望JavaScript能够成为国际标准,以此抵抗微软。
1997年7月,ECMA组织发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。
(所以ECMAScript是核心部分)
2005年,Ajax方法(Asynchronous JavaScript and XML)正式诞生,Jesse James Garrett发明了这个词汇。它开始流行的标志是,2月份发布的Google Maps项目大量采用该方法。它几乎成了新一代网站的标准做法,促成了Web 2.0时代的来临。
2006年,jQuery函数库诞生,作者为John Resig。jQuery为操作网页DOM结构提供了非常强大易用的接口,成为了使用最广泛的函数库,并且让JavaScript语言的应用难度大大降低,推动了这种语言的流行。
2009年,Node.js项目诞生,创始人为Ryan Dahl,它标志着JavaScript可以用于服务器端编程,从此网站的前端和后端可以使用同一种语言开发。并且,Node.js可以承受很大的并发流量,使得开发某些互联网大规模的实时应用变得容易。
2012年,单页面应用程序框架(single-page app framework)开始崛起,AngularJS项目都发布了1.0版本。
2013年,ECMA正式推出JSON的国际标准,这意味着JSON格式已经变得与XML格式一样重要和正式了。
2013年5月,Facebook发布UI框架库React,引入了新的JSX语法,使得UI层可以用组件开发。
2015年,Angular框架宣布,2.0版将基于微软公司的TypeScript语言开发,这等于为JavaScript语言引入了强类型。同年,Facebook公司发布了React Native项目,将React框架移植到了手机端,
2015年6月,ECMA标准化组织正式批准了ECMAScript 6语言标准,定名为《ECMAScript 2015 标准》。
2016年,vue.js 2版本正式发布,以轻便的视图层、mvvm的设计模式、官方的中文文档而迅速在国内火了起来。
至此,javascript从大杂烩借鉴了其他语言而组成的语言,到现在拥有了:
成为了前端必备的动态语言
1.1.3 什么是JavaScript?
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
JavaScript的组成部分?
1.2 DOM
1.什么是window?
window:是一个全局对象, 代表浏览器中一个打开的窗口, 每个窗口都是一个window对象
2.什么是document?
document是window的一个属性, 这个属性是一个对象
document: 代表当前窗口中的整个网页,
document对象保存了网页上所有的内容, 通过document对象就可以操作网页上的内容
3.什么是DOM?
DOM 定义了访问和操作 HTML文档(网页)的标准方法
DOM全称: Document Object Model, 即文档模型对象
所以学习DOM就是学习如何通过document对象操作网页上的内容
获取DOM
1.在JavaScript中HTML标签也称之为DOM元素
2.使用document的时候前面不用加window
1.通过id获取指定元素
由于id不可以重复, 所以找到了就会将找到的标签包装成一个对象返回给我们, 找不到就返回Null
注意点: DOM操作返回的是一个对象, 这个对象是宿主类型对象(浏览器提供的对象)
2.通过class名称获取
由于class可以重复, 所以找到了就返回一个存储了标签对象的数组, 找不到就返回一个空数组
3.通过name名称获取
由于name可以重复, 所以找到了就返回一个存储了标签对象的数组, 找不到就返回一个空数组
注意点:
getElementsByName 在不同的浏览器其中工作方式不同。在IE和Opera中,getElementsByName() 方法还会返回那些 id 为指定值的元素。
4.通过标签名称获取
由于标签名称可以重复, 所以找到了就返回一个存储了标签对象的数组, 找不到就返回一个空数组
5.通过选择器获取
querySelector只会返回根据指定选择器找到的第一个元素
6.通过选择器获取
querySelectorAll会返回指定选择器找到的所有元素
1.获取指定元素所有的子元素
2.什么是节点?
DOM对象(document), 这个对象以树的形式保存了界面上所有的内容
HTML页面每一部分都是由节点(标签(元素),文本,属性)
3.获取指定节点中的第一个子节点
4.获取指定节点中最后一个子节点
console.log(oDiv.lastChild);
4.获取指定元素中最后一个子元素
console.log(oDiv.lastElementChild);
5.通过子元素获取父元素/父节点
6.获取相邻上一个节点
console.log(item.previousSibling);
// 获取相邻上一个元素
// console.log(item.previousElementSibling);
7.获取相邻下一个节点
console.log(item.nextSibling);
// 获取相邻下一个元素
console.log(item.nextElementSibling);
节点增删改查
元素属性操作
无论是通过document创建还是查询出来的标签,系统都会将元素包装成一个对象返回给我们,
系统在包装这个对象的时候会自动将元素的属性都包装到这个对象中,
所以只要拿到这个对象就可以拿到标签属性,操作标签属性
1.如何获取元素属性
2.如何修改元素属性
3.如何新增元素属性
4.如何删除元素属性
元素内容操作
操作元素样式
DOM事件
1.什么是事件?
用户和浏览器之间的交互行为我们就称之为事件, 比如:点击,移入/移出
2.如何给元素绑定事件?
在JavaScript中所有的HTML标签都可以添加事件
元素.事件名称 = function(){};
当对应事件被触发时候就会自动执行function中的代码
1.3 作业(task)
https://gitee.com/turingitclub/javascript-learning/tree/dev/task01
1.4 拓展阅读