第九章 最後的補充
一、Jquery簡單闡述
JQuery是一個JavaScript庫,旨在減少和簡化處理DOM和新增視覺效果的JavaScript程式碼;使用時必須得新增庫路徑;學習路徑:http://jquery.com/
例1:
1 window.onload=function(){ 2 3 alert(“the page is loaded!”); 4 5 }
Jqery:
1 $(document).ready(function(){ //在網頁載入完呼叫的函式 2 3 alert("the page is loaded!"); 4 5 });
進一步簡化:
1 $(function(){ 2 3 alert("the page is loaded!"); 4 5 });
例2:id為buynow的元素新增單擊事件
1 $(function(){ 2 3 $("$buynow").click(function(){ 4 5 alert("I want to buy now!"); 6 7 }); 8 9 });
//要給網頁所有a元素新增單擊事件就將上述 buynow改成a 即可
二、補充的DOM獲取元素的方法
document.getElementsByClassName //返回一個NodeList其中包含所有class指定的元素
document.getElementsByName //返回name特性的所有元素
document.querySelector //將一個選擇器作為引數並返回匹配的第一個元素
document.querySelectorAll //選擇器為引數,返回NodeList所有元素
如:var li=document.querySelector (“#playlist .song”);//先查id為playlist元素再查詢第一個class特性為song的元素
三、補充物件window的屬性方法
window.innerWidth //瀏覽器寬度 單位px
window.innerHeight //瀏覽器高度 單位px
window.close(); //關閉瀏覽器視窗
window.print(); //使用印表機列印網頁
window.confirm(); //提供Okand Cancle
window.history; //瀏覽器歷史記錄
window.location; //當前網頁的URl,可以設定載入新的網頁
四、arguments
在每個函式中都有一個名為arguments的物件可供使用;以陣列形式返回函式的所有引數
1 <script> 2 3 function printArgs(){ 4 5 for(var i=0;i<arguments.length;i++){ 6 7 console.log(arguments[i]); 8 9 } 10 11 } 12 13 14 15 printArgs("one",1,1+5,"five"); 16 17 </script>
五、處理異常
網頁控制器視窗可以報錯,也可以使用try/catch
1 <!doctype html> 2 3 <html lang="en"> 4 5 <head> 6 7 <meta charset="utf-8"> 8 9 <title>Show dogs</title> 10 11 <script> 12 13 window.onload=function(){ 14 15 try{ 16 17 var message=document.getElementById("messge"); 18 19 message.innerHTML="Here`s the message!"; 20 21 }catch(error){ 22 23 console.log("Erroe! "+error.messsge); 24 25 } 26 27 }; 28 29 </script> 30 31 </head> 32 33 <body> 34 35 <div id="message"></div> 36 37 </body> 38 39 </html>
六、addEventListener新增事件處理程式
給一個事件新增多個處理程式,使用方法addEventListener
例:
1 <!doctype html> 2 3 <html lang="en"> 4 5 <head> 6 7 <meta charset="utf-8"> 8 9 <title>clickme</title> 10 11 <script> 12 13 window.onload=function(){ 14 15 var div=document.getElementById("clickme"); 16 17 if(div.addEventListener){//如果瀏覽器支援該方法 18 19 div.addEventListener("click",handleClick,false); 20 21 //引數:事件名稱,程式名稱,是否向上傳遞的標誌 22 23 }else if(div.attachEvent){//瀏覽器不支援addaddEventListener換方法 24 25 div.attachEvent("onclick",hanleClick);//引數稍有不同且以onclick代click 26 27 } 28 29 }; 30 31 32 33 function handleClick(){ 34 35 var evt=window.event;//瀏覽器是否支援e 36 37 var target; 38 39 if(evt.target){//檢查瀏覽器是否支援 40 41 target=evt.target; 42 43 }else{ 44 45 target=evt.srcElement; 46 47 } 48 49 alert("You Clicked on "+target.id); 50 51 } 52 53 </script> 54 55 </head> 56 57 <body> 58 59 <div id="clickme">dianwo</div> 60 61 </body> 62 63 </html>
七、遞迴
1 <script> 2 3 function fibonacci(n){ 4 5 if(n==0||n==1){ 6 7 return 1; 8 9 }else{ 10 11 return (fibonacci(n-1)+fibonacci(n-2)); 12 13 } 14 15 } 16 17 for(var i=0;i<10;i++){ 18 19 console.log("The fibonacci of "+i+" is "+fibonacci(i)); 20 21 } 22 23 </script>
八、JSON
JavaScript不僅是一種Web程式語言,還正在逐漸成為一種常用的物件儲存和傳輸格式,JSON是JavaScript Object Notation的縮寫;
例1
1 var fidoString=`{"name":"Fido","breed":"Mixed","weight":38}`;//單引號為JSON語句,即物件字串 2 3 var fido=JSON.parse(fidoString);//將字串轉換為物件
例2:
1 var fido={ 2 3 name:Fido, 4 5 breed:"Mixed", 6 7 weight:38 8 9 }; 10 11 var fidoString=JSON.stringify(fido);//將物件轉換成字串
九 、伺服器端JavaScript
Node.js是當前流行的一種JavaScript伺服器端技術,包含自己的執行環境和庫。也是單執行緒;
學習路徑:http://node.js.org/
十、正規表示式
“+”元字元規定其前導字元必須在目標物件中連續出現一次或多次。
“*”元字元規定其前導字元必須在目標物件中出現零次或連續多次。
“?”元字元規定其前導物件必須在目標物件中連續出現零次或一次。
s:用於匹配單個空格符,包括tab鍵和換行符;
S:用於匹配除單個空格符之外的所有字元;
d:用於匹配從0到9的數字;
w:用於匹配字母,數字或下劃線字元;
W:用於匹配所有與w不匹配的字元;
. :用於匹配除換行符之外的所有字元。
“^”定位符規定匹配模式必須出現在目標字串的開頭
“$”定位符規定匹配模式必須出現在目標物件的結尾
“”定位符規定匹配模式必須出現在目標字串的開頭或結尾的兩個
“B”定位符則規定匹配物件必須位於目標字串的開頭和結尾兩個邊界之內,
即匹配物件既不能作為目標字串的開頭,也不能作為目標字串的結尾。
/[A-Z]/上述正規表示式將會與從A到Z範圍內任何一個大寫字母相匹配。
/[a-z]/上述正規表示式將會與從a到z範圍內任何一個小寫字母相匹配。
/[0-9]/ 上述正規表示式將會與從0到9範圍內任何一個數字相匹配。
/([a-z][A-Z][0-9])+/上述正規表示式將會與任何由字母和數字組成的字串,如 “aB0” 等相匹配。
{n} n 是一個非負整數。匹配確定的 n 次。例如,`o{2}` 不能匹配 “Bob” 中的 `o`,但是能匹配 “food” 中的兩個 o。
{n,} n 是一個非負整數。至少匹配 n 次。例如,`o{2,}` 不能匹配 “Bob” 中的 `o`,但能匹配 “foooood” 中的所有 o。`o{1,}` 等價於 `o+`。`o{0,}` 則等價於 `o*`。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 將匹配 “fooooood” 中的前三個 o。`o{0,1}` 等價於 `o?`。請注意在逗號和兩個數之間不能有空格。
優先順序如下:
1. 1. 轉義符
2. 2.(), (?, (?=), [] 圓括號和方括號
3. 3.*, +, ?, {n}, {n,}, {n,m} 限定符
4. 4.^, $, anymetacharacter 位置和順序
5. 5.|“或”操作
JavaScript 1.2中帶有一個功能強大的RegExp()物件,可以用來進行正規表示式的匹配操作。其中的test()方法可以檢驗目標物件中是否包含匹配模式,並相應的返回true或false。
例:
1 var email = obj.email.value; 2 3 var pattern = 4 5 /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; 6 7 flag = pattern.test(email); 8 9 if(flag) 10 11 { 12 13 alert(“Your email address is correct!”); 14 15 return true; 16 17 }
例:
1 在字串中執行查詢
exec 方法:exec(String source)
例如:
1 function isDigit(s){ 2 3 var reg = /^[0-9]{1,20}$/; 4 5 var result = reg.exec(s); 6 7 //如果格式正確,返回原字串,否則返回null 8 9 alert(result); 10 11 }
2 在字串中執行查詢
match 方法:match(reg)
例如:
1 function matchDemo(source){ 2 3 var reg = /^[a-z]/; 4 5 var result = source.match(reg); 6 7 alert(result); 8 9 }
//注意與exec的區別
3 執行模式判定
test 方法:Boolean test(source)
例如:
1 function isDigit(s){ 2 3 var reg = /^[0-9]{1,20}$/; 4 5 var flag = reg.test(s); 6 7 //如果格式正確,返回true,否則返回false 8 9 if(flag){ 10 11 return true; 12 13 }else{ 14 15 return false; 16 17 } 18 19 }
4 執行字串位置查詢
search 方法:int search(String reg)
例如:
1 function seachString(){ 2 3 var r, re; // 宣告變數 4 5 var s = "The rain in Spain falls mainly in the plain."; 6 7 re = /falls/; // 建立正規表示式模式 8 9 r = s.search(re); // 查詢字串 10 11 alert(r); // 返回 int 結果表示出現位置 12 13 }
5 執行字串分割
split 方法:String[ ] split(String reg)
例如:
1 function splitString( ){ 2 3 var r, reg; // 宣告變數 4 5 reg = /abc/; // 建立正規表示式模式 6 7 var s = “IcansaymyabcIcansaymyabcIcan…"; 8 9 r = s.split(reg); // 分割字串 10 11 for(var p in r){ // 返回 String 陣列 12 13 alert(r[p]); 14 15 } 16 17 }