[前端學習]js特效部分學習筆記,第三天

weixin_34162695發表於2017-10-26

滑鼠事件

  • 有些之前應該記錄過,這裡作一個總結:
    元素.onmousedown 滑鼠按下
    元素.onmouseup 滑鼠彈起
    元素.onclick 滑鼠點選
    元素.ondblclick 滑鼠雙擊
    元素.onmouseover 滑鼠經過
    元素.onmouseout 滑鼠離開
    元素.onmousemove 滑鼠移動

鍵盤事件

  • 現在用到的有三個
    元素.onkeydown 鍵盤按下
    元素.onkeyup 鍵盤彈起
    元素.onkeypress 鍵盤按壓
  • onkeypress的觸發方式和onkeydown一樣,但是它們之間的編碼不一樣。
  • event.keyCode可以獲取到對應鍵的編碼

表單事件

  • 彙總幾個常用的:
    元素.onfocus 表單控制元件獲得焦點
    元素.onblur表單失去焦點
    元素.oninput 使用者在表單控制元件輸入的時候執行
    元素.onchange 表單控制元件失去焦點後,如果其內容發生了改變執行

正規表示式

正規表示式的建立

  • 有兩種方式可以建立正規表示式
    • 通過建構函式建立:
      var regEx = new RegExp(/正規表示式/);
    • 通過字面量建立:
      var regEx = /正規表示式/;
  • 通過字面量的方式來建立正則用得最多。當然如果正則只使用一次,那麼連變數都可以不用,直接寫也可以。
  • 正規表示式必須用//包裹起來

test方法

  • 正規表示式其實就用來匹配字串,所以當你建立了正則後,肯定還要需要用正則去匹配。js中正則內建了.test方法
  • 正則.test(要匹配的值),匹配成功返回true,匹配不成功返回false

預定義類

  • 預定義類就是已經定義好的匹配格式
    . === [^\n\r] 匹配除換行和回車意外的任意字元
    \d === [0-9] 匹配數字字元
    \D === [^0-9] 匹配非數字字元
    \s === [\f\r\t\n\v] 匹配不可見的字元(換行,回車,空格等等)
    \S === [^\f\r\t\n\v] 匹配非不可見的字元
    \w === [a-zA-Z0-9] 匹配單詞字元(所有英文字母,數字,下劃線)
    \W === [^a-zA-Z0-9] 匹配非單詞字元
  • ===就是等價於的意思,左右作用完全相同。還可以發現預定於類,大寫和小寫它們的作用正好相反

字元類

  • 字串就是通過實際的字元來匹配
  • 簡單類[]
    • /[abc]/ 在正則中單獨只寫[]就表示或的意思,例子只要是abc三個字元任意一個字元匹配都可以,注意只有單獨寫不加其他字元類,才是或
  • 反向類^
    • /[^abc]/ 反向就是非的意思,例子中只要不是abc的字元都可以匹配。注意:這個字元只有放在[]中才表示非
  • 範圍類-
    • /[a-c]/ 橫線表示範圍,例子中a到c之間的任意字元有就能匹配
  • 組合類
    • /[a-dA-G0-8]/ 組合類實際就是把多個範圍組合起來,在這個組合的範圍裡有就能匹配,注意範圍類和組合類中的範圍都沒有限制,可以隨便寫

邊界符

  • 之間寫的驗證符號有一個侷限性,就是隻要字串中有符合了正則的值,那麼就會返回true。但是這種策略在實際中明顯是不行的,如果想要正則嚴格匹配,就需要加上邊界符
  • ^ 限制開頭
    • /^a/ 當^不在中括號裡時,就是邊界符,例子中就表示字串必須是以a開頭才能匹配
  • $ 限制結尾
    • /a$/ 例子中就表示字串必須是以a結尾才能匹配
  • 嚴格限制
    • /^a$/ 如果限制開頭和限制結尾一起寫,就說明必須是以a開頭以a結尾,也就是隻有a才能匹配成功。注意:aa雖然也是a開頭a結尾,但是依然不能匹配成功,只有配合量詞才行。

量詞

  • 正則中量詞是用來限制字元允許出現的次數
  • /x*/ *號表示,x能出現0次或多次,等價於x>=0
  • /x+/ +號表示,x能出現1次或多次,等價於x>=1
  • /x?/ ?號表示,x能出現0次或者1次,等價於x>=0且x<=1
  • /x{}/ {}可以自定義x出現的次數。如果只寫{1}表示x只能出現1次;如果寫{1,}表示x可以出現1次或多次;如果寫{1,5}表示x可以出現1-5次,這種完整寫就是限定一個出現次數的範圍
  • 注意如果想要量詞來修飾一串字元,必須將字串用()包裹起來。否則它只會修飾它緊跟的那個字元

正則中三個括號的區別

  • {} 大括號定義字元出現的次數
  • [] 中括號定義字元的位置,它內部的字串只佔一個位置(就是一個字元),只要滿足任意一個就行
  • () 小括號用來分組,內部的字串會劃為一個整體組

簡單正則案例

  • 注意表單驗證需要嚴格匹配,所以建議都加上^$邊界符
  • 驗證座機,座機一般以0開頭,用-來分割。前面一共3-4位數字,後面7-8位數字
    /^0\d{2,3}-\d{7,8}$/
  • 驗證姓名,中文在瀏覽器中需要用到unicode編碼,[\u4e00-\u9fa5]這個範圍基本就含括了所有的中文漢字,並且一般姓名是2個字以上
    /^[\u4e00-\u9fa5]{2,}$/
  • 驗證qq,qq號一般是5-11位,且開頭是非0的數字
    /^[1-9]\d{4,10}$/
  • 驗證手機,手機號一般是11為,且有號段的限制,常見的有13[0-9] 14[57] 15[0-9] 17[1456789] 18[0-9]
    /^(13[0-9]|14[57]|15[0-9]|17[1456789]|18[0-9])\d{8}$/
  • 驗證郵箱,規律比較多,這裡就不說明了,.號在[]裡不用加轉義符
    /^\w+([-+._]\w+)*@\w+([-.]\w+)*\.\w+([.-]\w+)*$/

關於遞迴的正確思考方式

  • 遞迴的執行過程是不符合我們正常思維的,所以你想一步一步的回溯遞迴是吃力不討好的方式。
  • 其實我們對於遞迴應該換一種思考方式,就是很多時候我們只需要確定推出來的規律是否正確,如果規律是正確的,其實沒有必要回溯遞迴執行的步驟。如果遞迴執行的結果不對,那麼很大原因是規律錯了,而不是程式執行錯了

DOM綜合考試總結

  • 通過使用者代理字串識別瀏覽器的方法叫做代理測試
  • 單選按鈕支援onclick事件
  • 只有innerHTML才能替換元素內部所有內容,包括文字和html標籤
  • window.onload是在文件所有元素載入完畢且所有外部檔案都載入完畢才執行
  • 如果一個函式沒有寫返回值,那麼呼叫該函式它的返回值為undefined
  • 當一個基本資料型別呼叫屬性或者方法時,js內部會自動建立一個對應基本型別的包裝物件
  • 動態建立物件的五種方法:document.write();innerHTML;document.createElement();cloneNode();appendChild()
  • for迴圈中設定定時器不會立即執行,要全部迴圈完畢才會依次執行定時器
  • 函式的宣告提升優先順序高於變數提升

相關文章