函數(shù)函數(shù)是可以重復(fù)使用的代碼塊,可以由一個事件執(zhí)行,或被調(diào)用執(zhí)行,。一個函數(shù)中的代碼只有在事件觸發(fā)或函數(shù)被調(diào)用的時候才被執(zhí)行,。你可以在頁面中的任 何位置調(diào)用腳本(如果函數(shù)嵌入一個外部的 .js 文件,甚至可以從其他的頁面中調(diào)用),。函數(shù)一般定義在頁面開始位置的<head> 部分中,。 eg: <html> <head> <script type="text/javascript"> function displaymessage() { alert("Hello World!") } </script> </head> <body> <form> <input type="button" value="Click me!" onclick="displaymessage()"> </form> </body> </html> 假如上面的例子中的 alert("Hello world!!") 沒有被寫入函數(shù),那么當頁面被載入時它就會執(zhí)行?,F(xiàn)在,,當用戶擊中按鈕時,腳本才會執(zhí)行,。我們給按鈕添加了onClick 事件,,這樣按鈕被點擊時函數(shù)才會執(zhí)行。 創(chuàng)建函數(shù)的語法: function 函數(shù)名(var1,var2,...,varX) 若無var1,var2,...,varX也可以,,表示無參數(shù)函數(shù),。 { 代碼... } 或 var a = function () {代碼...}
數(shù)組數(shù)組就是某類數(shù)據(jù)的集合,數(shù)據(jù)類型可以是整型,、字符串,、甚至是對象Javascript不支持多維數(shù)組,但是因為數(shù)組里面可以包含對象(數(shù)組也是一個對象). 定義數(shù)組 定義數(shù)組要使用關(guān)鍵字new,。 eg:var myArray=new Array() 向數(shù)組內(nèi)賦值有2種方法:
var mycars=new Array() mycars[0]=“buick” mycars[1]=”Volvo” mycars[2]=”BMW” 上面的定義中沒有定義數(shù)組的大小,你可以向數(shù)組中添加任意多個值,。你也可以在定義數(shù)組對象時寫入一個整型參數(shù)來控制數(shù)組的大小. eg: var mycars=new Array(3) mycars[0]="buick” mycars[1]=”Volvo” mycars[2]=”BMW”
eg: var mycars=new Array(”buick”,”Volvo”,”BMW”) 或var mycars=[”buick”,”Volvo”,”BMW”]
你可以通過使用數(shù)組的名稱后面加索引號來指向數(shù)組中某一元素,。索引號從零開始。 eg: document.write(mycars[0]) 將輸出:buick 修改數(shù)組內(nèi)的值 要修改數(shù)組中現(xiàn)有的值只需要將新值寫入數(shù)組指定位置即可,。 eg:將0號索引的值改為:Opel,。 寫法為:mycars[0]=”O(jiān)pel” document.write(mycars[0]) Array literals 數(shù)組其實是特殊的對象,對象有特有屬性和方法,,通過 對象名.屬性 ,、對象.方法() 來取值和調(diào)用,而數(shù)組是通過下標來取值,,Array Literals跟數(shù)組有很多相似,,都是某數(shù)據(jù)類型的集合,但是Array Literals從根本來說,,是個對象,,但聲明和調(diào)用,跟數(shù)組是有區(qū)別,。 var aa=new Object(); aa.x="cat"; aa.y="sunny"; alert(aa.x);//彈出cat 創(chuàng)建一個簡單的對象,,一般調(diào)用是通過aa.x,,而如果當成Array literals的話,用alert(aa[“x”])一樣會彈出cat var a = {x:"cat", y:"sunny"}; alert(a["y"]); //彈出sunny 這是另一種創(chuàng)建對象的方法,,結(jié)果是一樣的. 數(shù)組的循環(huán) var a=[1,2,3,4,5,6]; for(i=0;i<a.length;i++) { alert(a[i]); } 這是最常用的遍歷數(shù)組,,代碼依次彈出1至6. 還有一宗方法為: var a=[1,2,3,4,5,6]; for(var e in a) { alert(e)} 還是依次彈出1至6,for…in是歷遍對象(數(shù)組是特殊的對象)對象,,用在數(shù)組上,,因為數(shù)組沒有屬性名,所以直接輸出值,, 數(shù)組的操作方法 先概覽下下面的這些操作數(shù)組常用的方 法:toString(),valueOf(),toLocalString(),join(),split(),slice(),concat(),pop(),push(),shift(),unshift(),sort(),splice()
功能:返回數(shù)組的全部元素 注:數(shù)組名也可以返回整個數(shù)組 eg: var m=["am","bm","cm"];//用括號聲明一個數(shù)組對象 alert(m.toString());//toString()返回數(shù)組對象的所有內(nèi)容,用逗號分割,即am,bm,cm alert(m.valueOf());//valueOf()也返回數(shù)組對象的所有內(nèi)容 alert(m.toLocaleString());//toLocaleString()也返回數(shù)組對象的所有內(nèi)容,但有地區(qū)語言區(qū)別,暫不研究 alert(m);//數(shù)組名也返回數(shù)組對象的所有內(nèi)容
功能:把數(shù)組各個項用某個字符(串)連接起來,但并不修改原來的數(shù)組 eg: var m=["am","bm","cm"];//用括號聲明一個數(shù)組對象 var n=m.join("---");//用---連接am,bm,cm. alert(m.toString());//m并沒有被修改,返回am,bm,cm alert(n);//n是一個字符串,為am---bm---cm
功能:把一個字符串按某個字符(串)分割成一個數(shù)組,但不修改原字符串 eg: var str="I love maomao,I am caolvchong"; var arr=str.split("o");//按字符o把str字符串分割成一個數(shù)組 alert(arr);//輸出整個數(shù)組
功能:返回某個位置開始(到某個位置結(jié)束)的數(shù)組部分,不修改原數(shù)組 eg: var m=["am","bm","cm","dm","em","fm"]; var n=m.slice(2);//返回第二個元素bm后面的元素,即cm,dm,em,fm var q=m.slice(2,5);//返回第二個元素后到第五個元素,即cm,dm,em alert(n); alert(q); 數(shù)組對象的棧操作:
eg: var m=["am","bm","cm","dm","em","fm"]; m.push("gm");//在數(shù)組末尾添加元素gm alert(m); m.pop();//刪除數(shù)組最后一個元素gm alert(m); 數(shù)組對象的隊列操作:
代碼: var m=["am","bm","cm","dm","em","fm"]; m.unshift("gm");//在數(shù)組第一個元素位置添加元素gm alert(m); m.shift();//刪除數(shù)組第一個元素gm alert(m);
注:即便是數(shù)字數(shù)組,也將轉(zhuǎn)化為字符串來進行比較排序 eg: var m=["am","fm","gm","bm","em","dm"]; m.sort();//按字母序排序 alert(m);
代碼: var m=["am","bm"] var n=m.concat("cm");//添加一項cm,并且賦予新數(shù)組對象 alert(m);//原數(shù)組沒有被修改 alert(n);//輸出新數(shù)組對象
細節(jié): splice()有三個參數(shù)或三個以上參數(shù),前兩個是必須的,后面參數(shù)是可選的 進行添加:splice(起始項,0,添加項) 進行刪除:splice(起始項,要刪除的項個數(shù)) 進行替換:splice(起始項,替換個數(shù),替換項) 這個其實是添加刪除的共同結(jié)果 eg: var m=["am","bm"] m.splice(1,0,"fm","sm");//在第一項后面添加fm和sm,返回am,fm,sm,bm alert(m); m.splice(2,1);//刪除第二項后面一項(即第三項sm,返回am,fm,bm) alert(m); m.splice(2,1,"mm");//替換第二項后面一項(即第三項,返回am,fm,mm) alert(m); |
|