一、数组
- 定义:在单个对象中存储多个值。
- 构造函数:
1)Array():返回一个长度为0的数组对象。
2)Array(size):返回具有指定个数的数组,元素的初始值都是:undefined。
3)Array(元素列表):用元素列表初始化数组,元素可以是任意类型。 - 直接创建并初始化数组
var arr = ["tom",10,null,true]; - 数组的长度不固定,赋值即可改变数组的长度
1)为原数组不存在的下标元素赋值,可以改变数组大小:
例如:
var arr = new Array(3);
arr[3] = 10;
arr[5] = 100;
未赋值元素都是undefined。
2)数组的lengt属性不是只读的,可以改变(变大或变小(相当于删除后面的元素)) - 使用下标来访问元素
- 遍历写法:
for(i in arr){
document.write(arr[i]);
}
注意:i表示遍历的当前元素的下标,而不是当前元素。
7.length:数组的长度,即数组中元素的个数。
8.常用的方法:
1)concat(array):返回一个新数组,由当前数组和参数数组连接而成。
2)join("分隔符"):返回一个字符串,由数组中的所有元素连接而成,原宿建德分隔符由参数指定。字符串对象。split('分隔符'):根据参数指定的分隔符,把当前字符串转换为数组。
3)reverse():返回一个新数组,由原来的数组反转而成。
4)sort():按照字母殊勋对数组中的元素进行排序。
sort(比较函数):根据参数中的函数进行比较元素大小。
例如:
arr.sort(function(x,y){
return x - y;
});
5)indexOf(element):在数组中查找参数指定的值第一次数显的位置,找到返回对应的索引号,没有找到返回-1.。
6)lastIndexOf(element):在数组中查找参数指定的值最后一次出现的位置,找到返回对应的索引号,没有找到返回-1。
7)slice(beginIndex,endIndex):返回一个新数组,为原来数组的一部分,不包括endIndex元素。
8)toString():返回将数组中的元素转为由逗号分隔的字符串。
9)栈操作:
栈的特点:先进后出,后进先出。
a)push(元素列表):给数组中增加新元素,并返回数组的新长度(入栈)。
b)pop():移除数组中的最后一个元素,并返回该元素(出栈)。
10)队列操作:
队列的特点:先进先出,后进后出。
a)push(元素列表):入队
b)shift():移除数组中第一个元素并返回该元素(出队)。
11)splice(index,howmany,element…):用户向数组中添加、删除、替换数组元素。
a)index:必需,从何处添加。删除元素。
b)howmany:必需,规定应该删除多少个元素,添加元素的时候,该值为0。
c)elemant…:元素列表,可选,向数组添加的元素列表。
练习:
1.使用prompt()函数读入5名学生的成绩,保存到一个数组中,并求数组中的最大值,并倒序排序输出。
2.随机生成1-100以内的20个数,放入到数组中,对前10个元素使用升序,对后10个元素使用降序。
二、引用类型
javascript语言中并没有真正的类,javascript中使用“对象的定义”这个概念,相当于其他语言中的类的概念。
引用类型:也称为对象的定义,描述一类对象所共同具有的属性和方法。
内置的引用类型:ECMAScript提供了很多原声引用类型,以便开发人员使用。
1)Object
2)Array
3)Date
4)Math
5)RegExp(正则表达式)对象:通过引用类型创建的一个实例。
-
对象的创建方式。
1)创建一个Object的实例,然后添加它的属性和方法。
var o = new Object();
o.name = "tom";
o.age = 20;
o.sayHi = function(){
alert("Hi!");
}
o.sayName = function(){
alert(this.name);//this表示当前对象
}o.sayName();//方法的调用
2)使用字面量方式创基金对象。
var stu = {
name: "tom",
"age": 20,
sayHi:function(){
alert("Hi");
}
}; 使用delete删除对象的属性。
delete stu.agewith语句的作用:将代码的作用域设置到一个特定对象上。
with(stu){
var n = name;
var a = age;
}对象的废除
在ECMAScript中有无用存储单元收集程序,因此,javascript不必专门销毁对象来释放内存。
三、Date对象
- 构造函数:
1)Date():得到浏览器的当前时间。
2)Date(year,month,date):根据参数指定的年月日创建日期对象(注意:month从0开始)。
3)Date(year,month,date,hours,minutes,seconds):根据参数指定的年月日时分秒创建日期对象(注意:month从0开始)。
4)Date("year/month/date"):根据日期格式字符串创建日期对象(注意:month从1开始)。 - 得到年月日时分秒
getXXX():
getYear():得到从1900年以来的年份(日期的年份减去1900)
getFullYear():得到真是年份
getMonth():得到月份(1月份为:0)
getDate():得到日期
getDay():得到星期,0表示星期日,1表示星期一
getHours():得到小时
getMinutes():得到分钟
getSeconds():得到秒
getTime():得到从1970年1月1日00:00:00以来的毫秒数 - 设置年月日时分秒方法:
setXXX()
4.toLocaleString():把日期对象表示的时间转换为本地字符串格式(包括年月日时分秒)。
toLocaleDateString():把日期对象表示的时间转换为本地字符串格式(包括年月日)。
toLocaleTimeString():把日期对象表示的时间转换为本地字符串格式(包括时分秒)。 - 定时器:
setTimeout("函数()",时间间隔):执行该定时器方法后,在指定的时间间隔到的时候,执行参数指定的函数一次
该方法的返回值表示创建的定时器对象。
clearTimeout(定时器对象):关闭定时器
四、键盘事件处理
- event:事件对象,在事件发生的时候,由系统创建
属性:
keyCode:键盘码,每一个按键都不同,例如:回车:13、空格:32、向上箭头:38 - 如何设置键盘事件处理程序
document.onkeydown = 事件处理函数名(或匿名函数)
五、Math
- random():生产一个0到1之间的随机数,该值大于等于0,小于1。
- round(val):四舍五入。
六、String对象
- 构造函数:
String("字符串字面量") - 直接使用字符串字面量赋值。
var s = 'tom'; - length:得到字符串中字符个数。
- 常用的方法:
1)charAt(index):得到索引号为index的字符
2)substring(startIndex,endIndex):取子串
3)substr(startIndex,length):取子串
4)indexOf(查找的串):在字符串中查找参数指定的字符串第一次出现的位置,找到返回对应的索引号,没有找到返回-1。
5)lastIndexOf(查找的串):在字符串中查找参数指定的字符串最后一次出现的位置,找到返回对应的索引号,没有找到返回-1。
6)replace(str1,str2):返回一个新的字符串,其中把原字符串中的第一个str1,替换为str2
7)toUpperCase():转换为大写字母。
8)toLowerCase():转换为小写字母。
七、表单验证
- 定义:在表单数据被提交给服务器之前,对html表单中输入的数据进行验证,如果没有错误,则提交表单,否则不提交。
- 作用:
1)在客户端验证,速度快。
2)减轻服务器压力。 - 验证过程:
1)编写页面:
<form action="login.jsp" onsubmit="return checkForm();">
<input type="submit" value="登录">
</form>
2)当我们点击“提交”按钮的时候,会自动触发form上的onsubmit事件,接着就会调用事件的处理程序checkForm()。
3)编写表单验证方法checkForm(),该方法返回值为true,表示验证成功,提交表单,返回false,表示表单验证失败,不提交表单。
4.在失去焦点的时候,对某个表单元素进行验证。
1)在验证表单元素的后面添加一个span标签,设置有id属性<span id="errUsername"></span>
2)在要验证的表单元素中添加失去焦点事件处理程序:
<input type="text" name="username" onblur="checkUsername()">
3)在checkUsername()方法中编写代码:
a)得到span标签对象。
b)设置span标签内容为空串(目的是为了先清除已前的错误消息)。
c)判断当前表单元素是否输入正确,如果错误,为span标签指定错误消息。
八、正则表达式
定义:又称为规则表达式,就是用事先定义好的一些特殊字符、及这些特殊字符的组合,组成一个“规则字符串”,这个规则字符串用来表达对字符串的一种逻辑过滤。
作用:
1)验证给定的字符串是否符合正则表达式的规则。
2)可以通过正则表达式,从字符串中获取我们想要的部分(例如:“ab10eee20ddd30”)语法:
/正则表达式/修饰符(可选)方法:
1)test():检测字符串是否符合给定的规则,符合返回true,否则返回false
2)exec():在字符串中查找符合规则的内容,返回数组对象正则表达式的语言:
1)方括号:用于查找某个范围的字符
[abc]:表示任意一个字符
[^abc]:表示不在其中的任意一个字符
[0-9]:一个数字
[a-zA-Z]:一个字母
2)元字符:是拥有特殊含义的字符
^:从字符串的开始位置匹配
$:从字符串结尾匹配
\d:一个数字,相当于[0-9]
\D:一个非数字,相当于[^0-9]
\w:匹配包括下划线的任意单词字符,相当于[a-zA-Z0-9_]
\W:匹配任意非单词字符,相当于[^a-zA-Z0-9_]
.(点):匹配除了“\n”之外的任意单个字符
| :或者
():将()中的表达式定义为“组”
3)量词:
+:一次或多次
*:任意多次(0到多次)
?: 零次或1次
{n}:n次
{n,}:至少n次
{n,m}:n到m次
练习:验证一个日期字符串是否合法
var s = "34";-
修饰符:
1)i:忽略大小写比较
2)g:执行全局匹配(查找所有匹配而非找到第一个匹配后停止)
var exp = /\d{2}/g;var s = "abcd10abce20ddd30xx"; while(true){ var arr = exp.exec(s); if(arr != null){ document.write(arr+","); }else{ break; } } //10,20,30,
3)m:执行多行匹配
var exp = /ef$/m;//是否某一行以ef结尾var s = "abcdef\ngh"; var b = exp.test(s); document.write(b);//true, 不加m,就是单行匹配,返回false
-
字符串方法(部分)支持正则表达式
1)replace(正则表达式,字符串):使用第二个参数的字符串替换第一个参数正则表达式匹配的内容。var s = "tom10marry20scott30zangsan"; var exp = /\d{2}/g; var s2 = s.replace(exp,"");//不加g,只替换第一个 document.write(s2);
2)split(正则表达式):使用正则表达式作为分隔符,返回分隔的数组
var s = "tom10marry20scott30zangsan"; var exp = /\d{2}/; var arr = s.split(exp); document.write(arr);
3)search(正则表达式):在字符串中查找正则表达式匹配的字符串,返回第一次找到的位置索引号,没有找到返回-1
var s = "tom10marry207scott30zangsan"; var exp = /\d{3}/; var index = s.search(exp); document.write(index);//10
4)match(正则表达式):返回匹配的子串或null(没有找到匹配)
var s = "tom70marry20scott30zangsan"; var exp = /\d{2}/g; var s1 = s.match(exp); document.write(s1);
//加g选项,返回匹配的数组(70,20,30),不加g选项,返回只有70一个元素的数组
验证身份证号
旧身份证为15位数字
新身份证为18为数字,或17位数字,最后位x或X