一聊品、數(shù)組
- 定義:在單個對象中存儲多個值。
- 構(gòu)造函數(shù):
1)Array():返回一個長度為0的數(shù)組對象几苍。
2)Array(size):返回具有指定個數(shù)的數(shù)組翻屈,元素的初始值都是:undefined。
3)Array(元素列表):用元素列表初始化數(shù)組妻坝,元素可以是任意類型伸眶。 - 直接創(chuàng)建并初始化數(shù)組
var arr = ["tom",10,null,true]; - 數(shù)組的長度不固定,賦值即可改變數(shù)組的長度
1)為原數(shù)組不存在的下標(biāo)元素賦值刽宪,可以改變數(shù)組大欣逶簟:
例如:
var arr = new Array(3);
arr[3] = 10;
arr[5] = 100;
未賦值元素都是undefined。
2)數(shù)組的lengt屬性不是只讀的圣拄,可以改變(變大或變凶旖铡(相當(dāng)于刪除后面的元素)) - 使用下標(biāo)來訪問元素
- 遍歷寫法:
for(i in arr){
document.write(arr[i]);
}
注意:i表示遍歷的當(dāng)前元素的下標(biāo),而不是當(dāng)前元素庇谆。
7.length:數(shù)組的長度岳掐,即數(shù)組中元素的個數(shù)。
8.常用的方法:
1)concat(array):返回一個新數(shù)組饭耳,由當(dāng)前數(shù)組和參數(shù)數(shù)組連接而成串述。
2)join("分隔符"):返回一個字符串,由數(shù)組中的所有元素連接而成哥攘,原宿建德分隔符由參數(shù)指定剖煌。字符串對象材鹦。split('分隔符'):根據(jù)參數(shù)指定的分隔符逝淹,把當(dāng)前字符串轉(zhuǎn)換為數(shù)組。
3)reverse():返回一個新數(shù)組桶唐,由原來的數(shù)組反轉(zhuǎn)而成栅葡。
4)sort():按照字母殊勛對數(shù)組中的元素進(jìn)行排序。
sort(比較函數(shù)):根據(jù)參數(shù)中的函數(shù)進(jìn)行比較元素大小尤泽。
例如:
arr.sort(function(x,y){
return x - y;
});
5)indexOf(element):在數(shù)組中查找參數(shù)指定的值第一次數(shù)顯的位置欣簇,找到返回對應(yīng)的索引號规脸,沒有找到返回-1.。
6)lastIndexOf(element):在數(shù)組中查找參數(shù)指定的值最后一次出現(xiàn)的位置熊咽,找到返回對應(yīng)的索引號莫鸭,沒有找到返回-1。
7)slice(beginIndex,endIndex):返回一個新數(shù)組横殴,為原來數(shù)組的一部分被因,不包括endIndex元素。
8)toString():返回將數(shù)組中的元素轉(zhuǎn)為由逗號分隔的字符串衫仑。
9)棧操作:
棧的特點(diǎn):先進(jìn)后出梨与,后進(jìn)先出。
a)push(元素列表):給數(shù)組中增加新元素文狱,并返回數(shù)組的新長度(入棧)粥鞋。
b)pop():移除數(shù)組中的最后一個元素,并返回該元素(出棧)瞄崇。
10)隊列操作:
隊列的特點(diǎn):先進(jìn)先出呻粹,后進(jìn)后出。
a)push(元素列表):入隊
b)shift():移除數(shù)組中第一個元素并返回該元素(出隊)杠袱。
11)splice(index,howmany,element…):用戶向數(shù)組中添加尚猿、刪除、替換數(shù)組元素楣富。
a)index:必需凿掂,從何處添加。刪除元素纹蝴。
b)howmany:必需庄萎,規(guī)定應(yīng)該刪除多少個元素,添加元素的時候塘安,該值為0糠涛。
c)elemant…:元素列表,可選兼犯,向數(shù)組添加的元素列表忍捡。
練習(xí):
1.使用prompt()函數(shù)讀入5名學(xué)生的成績,保存到一個數(shù)組中切黔,并求數(shù)組中的最大值砸脊,并倒序排序輸出。
2.隨機(jī)生成1-100以內(nèi)的20個數(shù)纬霞,放入到數(shù)組中凌埂,對前10個元素使用升序,對后10個元素使用降序诗芜。
二瞳抓、引用類型
javascript語言中并沒有真正的類埃疫,javascript中使用“對象的定義”這個概念,相當(dāng)于其他語言中的類的概念孩哑。
引用類型:也稱為對象的定義栓霜,描述一類對象所共同具有的屬性和方法。
內(nèi)置的引用類型:ECMAScript提供了很多原聲引用類型横蜒,以便開發(fā)人員使用叙淌。
1)Object
2)Array
3)Date
4)Math
5)RegExp(正則表達(dá)式)對象:通過引用類型創(chuàng)建的一個實(shí)例。
-
對象的創(chuàng)建方式愁铺。
1)創(chuàng)建一個Object的實(shí)例鹰霍,然后添加它的屬性和方法。
var o = new Object();
o.name = "tom";
o.age = 20;
o.sayHi = function(){
alert("Hi!");
}
o.sayName = function(){
alert(this.name);//this表示當(dāng)前對象
}o.sayName();//方法的調(diào)用
2)使用字面量方式創(chuàng)基金對象茵乱。
var stu = {
name: "tom",
"age": 20,
sayHi:function(){
alert("Hi");
}
}; 使用delete刪除對象的屬性茂洒。
delete stu.agewith語句的作用:將代碼的作用域設(shè)置到一個特定對象上。
with(stu){
var n = name;
var a = age;
}對象的廢除
在ECMAScript中有無用存儲單元收集程序瓶竭,因此督勺,javascript不必專門銷毀對象來釋放內(nèi)存。
三斤贰、Date對象
- 構(gòu)造函數(shù):
1)Date():得到瀏覽器的當(dāng)前時間智哀。
2)Date(year,month,date):根據(jù)參數(shù)指定的年月日創(chuàng)建日期對象(注意:month從0開始)。
3)Date(year,month,date,hours,minutes,seconds):根據(jù)參數(shù)指定的年月日時分秒創(chuàng)建日期對象(注意:month從0開始)荧恍。
4)Date("year/month/date"):根據(jù)日期格式字符串創(chuàng)建日期對象(注意:month從1開始)瓷叫。 - 得到年月日時分秒
getXXX():
getYear():得到從1900年以來的年份(日期的年份減去1900)
getFullYear():得到真是年份
getMonth():得到月份(1月份為:0)
getDate():得到日期
getDay():得到星期,0表示星期日送巡,1表示星期一
getHours():得到小時
getMinutes():得到分鐘
getSeconds():得到秒
getTime():得到從1970年1月1日00:00:00以來的毫秒數(shù) - 設(shè)置年月日時分秒方法:
setXXX()
4.toLocaleString():把日期對象表示的時間轉(zhuǎn)換為本地字符串格式(包括年月日時分秒)摹菠。
toLocaleDateString():把日期對象表示的時間轉(zhuǎn)換為本地字符串格式(包括年月日)。
toLocaleTimeString():把日期對象表示的時間轉(zhuǎn)換為本地字符串格式(包括時分秒)骗爆。 - 定時器:
setTimeout("函數(shù)()",時間間隔):執(zhí)行該定時器方法后次氨,在指定的時間間隔到的時候,執(zhí)行參數(shù)指定的函數(shù)一次
該方法的返回值表示創(chuàng)建的定時器對象摘投。
clearTimeout(定時器對象):關(guān)閉定時器
四煮寡、鍵盤事件處理
- event:事件對象,在事件發(fā)生的時候犀呼,由系統(tǒng)創(chuàng)建
屬性:
keyCode:鍵盤碼幸撕,每一個按鍵都不同,例如:回車:13圆凰、空格:32杈帐、向上箭頭:38 - 如何設(shè)置鍵盤事件處理程序
document.onkeydown = 事件處理函數(shù)名(或匿名函數(shù))
五体箕、Math
- random():生產(chǎn)一個0到1之間的隨機(jī)數(shù)专钉,該值大于等于0挑童,小于1。
- round(val):四舍五入跃须。
六站叼、String對象
- 構(gòu)造函數(shù):
String("字符串字面量") - 直接使用字符串字面量賦值。
var s = 'tom'; - length:得到字符串中字符個數(shù)菇民。
- 常用的方法:
1)charAt(index):得到索引號為index的字符
2)substring(startIndex,endIndex):取子串
3)substr(startIndex,length):取子串
4)indexOf(查找的串):在字符串中查找參數(shù)指定的字符串第一次出現(xiàn)的位置尽楔,找到返回對應(yīng)的索引號,沒有找到返回-1第练。
5)lastIndexOf(查找的串):在字符串中查找參數(shù)指定的字符串最后一次出現(xiàn)的位置阔馋,找到返回對應(yīng)的索引號,沒有找到返回-1娇掏。
6)replace(str1,str2):返回一個新的字符串呕寝,其中把原字符串中的第一個str1,替換為str2
7)toUpperCase():轉(zhuǎn)換為大寫字母婴梧。
8)toLowerCase():轉(zhuǎn)換為小寫字母下梢。
七、表單驗(yàn)證
- 定義:在表單數(shù)據(jù)被提交給服務(wù)器之前塞蹭,對html表單中輸入的數(shù)據(jù)進(jìn)行驗(yàn)證孽江,如果沒有錯誤,則提交表單番电,否則不提交岗屏。
- 作用:
1)在客戶端驗(yàn)證,速度快漱办。
2)減輕服務(wù)器壓力担汤。 - 驗(yàn)證過程:
1)編寫頁面:
<form action="login.jsp" onsubmit="return checkForm();">
<input type="submit" value="登錄">
</form>
2)當(dāng)我們點(diǎn)擊“提交”按鈕的時候,會自動觸發(fā)form上的onsubmit事件洼冻,接著就會調(diào)用事件的處理程序checkForm()崭歧。
3)編寫表單驗(yàn)證方法checkForm(),該方法返回值為true,表示驗(yàn)證成功撞牢,提交表單率碾,返回false,表示表單驗(yàn)證失敗屋彪,不提交表單所宰。
4.在失去焦點(diǎn)的時候,對某個表單元素進(jìn)行驗(yàn)證畜挥。
1)在驗(yàn)證表單元素的后面添加一個span標(biāo)簽仔粥,設(shè)置有id屬性<span id="errUsername"></span>
2)在要驗(yàn)證的表單元素中添加失去焦點(diǎn)事件處理程序:
<input type="text" name="username" onblur="checkUsername()">
3)在checkUsername()方法中編寫代碼:
a)得到span標(biāo)簽對象。
b)設(shè)置span標(biāo)簽內(nèi)容為空串(目的是為了先清除已前的錯誤消息)。
c)判斷當(dāng)前表單元素是否輸入正確躯泰,如果錯誤谭羔,為span標(biāo)簽指定錯誤消息。
八麦向、正則表達(dá)式
定義:又稱為規(guī)則表達(dá)式瘟裸,就是用事先定義好的一些特殊字符、及這些特殊字符的組合诵竭,組成一個“規(guī)則字符串”话告,這個規(guī)則字符串用來表達(dá)對字符串的一種邏輯過濾。
作用:
1)驗(yàn)證給定的字符串是否符合正則表達(dá)式的規(guī)則卵慰。
2)可以通過正則表達(dá)式沙郭,從字符串中獲取我們想要的部分(例如:“ab10eee20ddd30”)語法:
/正則表達(dá)式/修飾符(可選)方法:
1)test():檢測字符串是否符合給定的規(guī)則,符合返回true,否則返回false
2)exec():在字符串中查找符合規(guī)則的內(nèi)容裳朋,返回數(shù)組對象正則表達(dá)式的語言:
1)方括號:用于查找某個范圍的字符
[abc]:表示任意一個字符
[^abc]:表示不在其中的任意一個字符
[0-9]:一個數(shù)字
[a-zA-Z]:一個字母
2)元字符:是擁有特殊含義的字符
^:從字符串的開始位置匹配
$:從字符串結(jié)尾匹配
\d:一個數(shù)字棠绘,相當(dāng)于[0-9]
\D:一個非數(shù)字,相當(dāng)于[^0-9]
\w:匹配包括下劃線的任意單詞字符再扭,相當(dāng)于[a-zA-Z0-9_]
\W:匹配任意非單詞字符氧苍,相當(dāng)于[^a-zA-Z0-9_]
.(點(diǎn)):匹配除了“\n”之外的任意單個字符
| :或者
():將()中的表達(dá)式定義為“組”
3)量詞:
+:一次或多次
*:任意多次(0到多次)
?: 零次或1次
{n}:n次
{n,}:至少n次
{n,m}:n到m次
練習(xí):驗(yàn)證一個日期字符串是否合法
var s = "34";-
修飾符:
1)i:忽略大小寫比較
2)g:執(zhí)行全局匹配(查找所有匹配而非找到第一個匹配后停止)
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:執(zhí)行多行匹配
var exp = /ef$/m;//是否某一行以ef結(jié)尾var s = "abcdef\ngh"; var b = exp.test(s); document.write(b);//true, 不加m,就是單行匹配泛范,返回false
-
字符串方法(部分)支持正則表達(dá)式
1)replace(正則表達(dá)式,字符串):使用第二個參數(shù)的字符串替換第一個參數(shù)正則表達(dá)式匹配的內(nèi)容让虐。var s = "tom10marry20scott30zangsan"; var exp = /\d{2}/g; var s2 = s.replace(exp,"");//不加g,只替換第一個 document.write(s2);
2)split(正則表達(dá)式):使用正則表達(dá)式作為分隔符,返回分隔的數(shù)組
var s = "tom10marry20scott30zangsan"; var exp = /\d{2}/; var arr = s.split(exp); document.write(arr);
3)search(正則表達(dá)式):在字符串中查找正則表達(dá)式匹配的字符串罢荡,返回第一次找到的位置索引號赡突,沒有找到返回-1
var s = "tom10marry207scott30zangsan"; var exp = /\d{3}/; var index = s.search(exp); document.write(index);//10
4)match(正則表達(dá)式):返回匹配的子串或null(沒有找到匹配)
var s = "tom70marry20scott30zangsan"; var exp = /\d{2}/g; var s1 = s.match(exp); document.write(s1);
//加g選項(xiàng),返回匹配的數(shù)組(70区赵,20惭缰,30),不加g選項(xiàng)笼才,返回只有70一個元素的數(shù)組
驗(yàn)證身份證號
舊身份證為15位數(shù)字
新身份證為18為數(shù)字漱受,或17位數(shù)字,最后位x或X