概念:一门客户端脚本语言
运行在客户端浏览器中,每个浏览器都有JavaScript的解析引擎
脚本语言:不需要编译,直接就可以被浏览器解析执行
功能:可以来增强用户和html页面的交互过程,可以来控制html元素让页面有一些动态的效果,增强用户的体验
JavaScript发展史:
- 1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为 : C–,后来更名为:ScriptEase
- 1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScript。后来,请来SUN公司的专家,修改LiveScript,命名为JavaScript
- 1996年,微软抄袭JavaScript开发出JScript语言
- 1997年,ECMA(欧洲计算机制造商协会),制定出客户端脚本语言的标准:ECMAScript,就是统一了所有客户端脚本语言的编码方式。
JavaScript = ECMAScript + JavaScript自己特有的东西(BOM+DOM)
ECMAScript(客户端脚本语言的标准)
基本语法
1.与html结合方式
内部js:在<script>标签体内定义js代码
例:
<script>
alert("Hello world");
</script>
外部js:通过src属性引入外部js文件
注意:<script>标签可以定义在html页面的任意位置,但是定义的位置会影响执行的顺序;可以定义多个<script>标签
2.注释
单行注释://注释内容
多行注释/*注释内容*/
与java注释相同(但JavaScript没有文档注释)
3.数据类型
原始数据类型(基本数据类型)
number:数字;可以表示整数/小数/NaN(not a number ,一个不是数字的数字类型)
string:字符串;可以表示字符/字符串
boolean:true和false
null:一个对象为空的占位符
undefined:未定义,如果一个变量未给初始化值,则会被默认赋值为undefined
引用数据类型(对象)
4.变量(一小块存储数据的内存空间)
JavaScript是弱类型的语言,而java是强类型的语言
强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型,只能存储固定类型的数据
弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据。
语法: var 变量名 = 初始化值;
typeof运算符:获取变量的类型
注意:null运算后得到的是object
5.运算符
一元运算符:++,–,+(正号),-(负号)
注意:在js中,如果运算数不是运算符的所要求的类型,那么js的引擎会自动的将运算数进行类型转换
string转number:按照字面值转换;如果字面值不是数字,则转为NaN(不是数字的数字)
boolean转number:true转为1,false转为0
算术运算符:+,-,*,/,%
赋值运算符:=
比较运算符:>,<,>=,<=,==,===(全等于)
比较方式:类型相同直接比较;类型不同先进行类型转换,再进行比较
字符串:按照字典顺序比较,按位逐一比较,直到得出大小为止
===(全等于):在比较之前,先判断类型,若类型不一样则直接返回false
逻辑运算符:&&,||,!
注意:
双与和双或都具有短路效果
非进行类型转换时:
number转boolean:零为false,非零为true
string转boolean:空字符串(“”)为false,其他为true
null和undefined:都为false
对象:所有对象都为true
三元运算符:表达式?值1:值2
6.流程控制语句
if…else…
switch
注意:
在java中switch接收的数据类型:byte,int,short,char,枚举(1.5),String(1.7)
在js中switch可以接收任意的数据类型
while
do…while
for
7.js特殊语法:
语句以分号结尾,如果一行只有一条语句分号则可以省略(不建议省略)
变量定义可以使用var关键字,也可以不使用(不建议不使用)
用和不用的区别:
用:定义的变量是局部变量
不用:定义的是局部变量
基本对象
Function(函数对象)
1.创建
①var 方法名称= new Function(形参列表,方法体);
例:
var fun = new Function(“a”,“alert(a);”);
fun(3);
②function 方法名称(形参列表){
方法体
}
例:
function fun(a) {
alert(a);
}
fun2(4);
③var 方法名称 = function(形参列表){
方法体
}
例:
var fun = function (a,b) {
document.write(a+b);
}
fun(5,5);
2.方法
3.属性
length(代表形参的个数)
4.特点
①方法定义时形参类型不用写,返回值类型也不用写
②方法是一个对象,如果定义名称相同的方法会发生覆盖
③在js中方法的调用只与方法的名称有关,与参数列表无关(重要)
④ 在方法声明中有一个隐藏的内置对象(数组)arguments,封装了所有传递的实际参数
5.调用
方法名称(实参列表);
Array
1.创建
①var 数组名称 = new Array(元素列表);
例:var arr1 = new Array(1,2,3);
②var 数组名称 = new Array(数组长度);
例:var arr1 = new Array(8);
③var 数组名称 = [元素列表];
例:var arr1 = [3,4,5];
2.方法
join(参数):将数组中的元素按照指定的分隔符拼接为字符串,如:arr.join("->");
push(参数):向数组尾部添加一个或更多元素,并返回新的长度,如:arr.push(4,5,6);
3.属性
lengh(表示数组的长度)
4.特点
①js中数组元素类型是可变的
②js中数组的长度是可变的
Boolean
基本数据类型的包装类
Date
1.创建
var date = new Date();
2.方法
toLocaleString():返回当前date对象对应的时间本地字符串格式
getTime():获取毫秒值,返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
Math
1.创建
不用创建,直接使用(类似java中静态方法),Math.方法名();
2.属性
PI(圆周率)
3.方法
random():返回一个0~1之间的随机数(包含0,不包含1)
ceil(x):对数进行上舍入
floor(x):对数进行下舍入
round(x):把数四舍五入为最接近的整数
Number
基本数据类型的包装类
String
基本数据类型的包装类
RegExp
正则表达式:定义字符串的组成规则
- 单个字符:[]
如: [a] [ab] [a-zA-Z0-9_]
特殊符号代表特殊含义的单个字符:
\d:单个数字字符 [0-9]
\w:单个单词字符[a-zA-Z0-9_](字母数字下划线) - 量词符号:
?:表示出现0次或1次
*:表示出现0次或多次
+:出现1次或多次
{m,n}:表示 m<= 出现次数<= n
m如果缺省: {,n}:最多n次
n如果缺省:{m,} 最少m次 - 开始结束符号
^:开始
$:结束
创建
1.var reg = new RegExp(“正则表达式”);
2.var reg = /正则表达式/;(推荐使用)
方法
test(参数):验证指定的字符串是否符合正则定义的规范
例:
var reg1 = new RegExp("^\\w{6,12}$");//单斜杠具有转义意义,所以用双斜杠代表单斜杠
var reg2 = /^\w{6,12}$/;
var str1 = "zhangsan";
var str2 = "lisi";
var f1 = reg1.test(str1);
document.write(f1+"<br>");
var f2 = reg1.test(str2);
document.write(f2+"<br>");
var f3 = reg2.test(str1);
document.write(f3+"<br>");
var f4 = reg2.test(str2);
document.write(f4+"<br>");
Global
特点:全局对象,Global中封装的方法不需要对象就可以直接调用
方法:
encodeURI():url编码
decodeURI():url解码
encodeURIComponent():url编码,编码的字符更多
decodeURIComponent():url解码
parseInt():将字符串转为数字,逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
isNaN():判断一个值是否是NaN(NaN六亲不认,连自己都不认,NaN参与的==比较全部为false)
eval():将JavaScript的字符串转成脚本来执行
DOM简单学习
功能:控制html文档的内容
获取页面标签(元素)对象Element:document.getElementById(“id值”);通过元素id获取元素对象
例:var light = document.getElementById(“light”);
操作Element对象
1.修改属性值,如:light.src = “…/img/on.gif”;
2.修改标签体内容
事件简单学习
功能:某些组件被执行了某些操作后,触发了某些代码的执行
绑定事件
1.直接在html标签上指定事件的属性(操作),属性值就是js代码
2.通过js获取元素对象指定事件属性,设置一个函数
BOM
概念:Browser Object Model 浏览器对象模型
将浏览器的各个部分封装成对象
组成:
Window(窗口对象)
1.创建
2.方法
与弹出框有关的方法:
alert();显示带有一段消息和一个确认按钮的警告框
confirm();显示带有一段消息以及确认按钮和取消按钮的对话框;如果点击确定按钮则方法返回true,如果点击取消按钮则方法返回false
prompt();显示可提示用户输入的对话框,返回值为用户输入的值
与打开关闭有关的方法:
close();关闭浏览器窗口,谁调用就关闭谁
open();打开一个新的浏览器窗口,返回一个新的Window对象
与定时器有关的方法:
setTimeOut();在指定的毫秒数后调用函数或计算表达式;参数1js代码或者方法函数对象,参数2毫秒数,返回值是唯一标识用于取消定时器
clearTimeOut();取消由 setTimeout()方法设置的timeout
setInterval();按照指定的周期(以毫秒计)来调用函数或计算表达式;参数1js代码或者方法函数对象,参数2毫秒数,返回值是唯一标识用于取消定时器
clearInterval();取消由setInterval()设置的 timeout
3.属性
获取其他BOM对象:
history
location
Navigator
Screen:
获取DOM对象:
document
4.特点
①Window对象不需要创建可以直接使用,如:window.方法名();
②window引用可以省略,直接使用:方法名();
Navigator(浏览器对象)
Screen(显示器屏幕对象)
Location(地址栏对象)
1.创建(获取):window.location或location(因为window可以省略)
2.方法
reload();重新加载当前文档
3.属性
href:设置URL或返回完整的URL
History(历史记录对象)
1.创建(获取):window.history或history(因为window可以省略)
2.方法
back():加载history列表中的前一个URL
forward():加载history列表中的下一个URL
go(参数):加载history列表中的某个具体页面,参数为正数就前进几个历史记录,参数为负数就后退几个历史记录
3.属性
length:返回浏览器当前窗口历史列表的URL数量
DOM
概念:Document Object Model文档对象模型
将标记语言文档的各个组成部分封装为对象;可以使用这些对象对标记语言文档进行CRUD的动态操作
DOM将html文档表达为树结构
DOM是W3C的标准,W3C DOM标准被分为3个不同的部分
核心DOM-针对任何结构化文档的标准模型
组成:
Document(文档对象)
Element(元素对象)
Attribute(属性对象)
Text(文本对象)
Comment(注释对象)
Node(节点对象,其他五个对象的父对象)
XML DOM-针对XML文档的标准
HTML DOM-针对HTML文档的标准
核心DOM模型
Document(文档对象)
1.创建(获取):在html domm模型中可以使用window.document(window可以省略)获取Document对象
2.方法
获取Element对象
getElementById():根据id属性值获取元素对象,id属性值一般唯一
getElementsByTagName():根据元素名称获取元素对象们,返回值是一个数组
getElementsByClassName():根据Class属性值获取元素对象们,返回值是一个数组
getElementsByName(): 根据name属性值获取元素对象们,返回值是一个数组
创建其他DOM对象
createAttribute(name)
createComment()
createElement()
createTextNode()
Element(元素对象)
1.方法
removeAttribute():删除属性
setAttribute():设置属性
Node(节点对象,其他五个对象的父对象,Node的方法其他对象都能用)
特点:所有dom对象都可以被认为是是一个节点
方法:
CRUD dom树
appendChild():向节点的子节点列表的结尾添加新的子节点
removeChild():删除(并返回)当前节点的指定子节点
replaceChild():用新节点替换一个子节点
属性:
parentNode:返回当前节点的父节点
HTML DOM
属性
innerHtml(获取和设置标签体的内容)
ELement,innerHtml = “”;(替换文本内容)
ELement,innerHtml += “”;(追加文本内容)
控制元素样式
- 使用元素的style属性来设置
如:
//修改样式方式1
div1.style.border = “1px solid red”;
div1.style.width = “200px”;
//font-size–> fontSize
div1.style.fontSize = “20px”; - 提前定义好类选择器的样式,通过元素的className属性来设置其class属性值。
事件监听机制
概念:某些组件被执行了某些操作后,触发了某些代码的执行
事件:某些操作
事件源:组件
监听器:代码
注册监听:将事件,事件源,监听器结合在一起(当事件源发生了事件则触发监听器代码)
常见事件:
1.点击事件
onclick(单击事件)
ondbclick(双击事件)
2.焦点事件
onblur(失去焦点,一般用于表单校验)
onfocus(获取焦点)
3.加载事件
onload(一张页面或图像完成加载)
4. 鼠标事件:
onmousedown (鼠标按钮被按下)
onmouseup(鼠标按键被松开)
onmousemove(鼠标被移动)
onmouseover (鼠标移到某元素之上)
onmouseout(鼠标从某元素移开)
5. 键盘事件:
onkeydown(某个键盘按键被按下)
onkeyup(某个键盘按键被松开)
onkeypress(某个键盘按键被按下并松开)
6.选择和改变
onchange(域的内容被改变)
onselect(文本被选中)
7. 表单事件:
onsubmit(确认按钮被点击)
onreset(重置按钮被点击)