鼠標(biāo)事件
- 有些之前應(yīng)該記錄過,這里作一個(gè)總結(jié):
元素.onmousedown 鼠標(biāo)按下
元素.onmouseup 鼠標(biāo)彈起
元素.onclick 鼠標(biāo)點(diǎn)擊
元素.ondblclick 鼠標(biāo)雙擊
元素.onmouseover 鼠標(biāo)經(jīng)過
元素.onmouseout 鼠標(biāo)離開
元素.onmousemove 鼠標(biāo)移動(dòng)
鍵盤事件
- 現(xiàn)在用到的有三個(gè)
元素.onkeydown 鍵盤按下
元素.onkeyup 鍵盤彈起
元素.onkeypress 鍵盤按壓
-
onkeypress
的觸發(fā)方式和onkeydown
一樣坏晦,但是它們之間的編碼不一樣棍弄。 -
event.keyCode
可以獲取到對(duì)應(yīng)鍵的編碼
表單事件
- 匯總幾個(gè)常用的:
元素.onfocus
表單控件獲得焦點(diǎn)
元素.onblur
表單失去焦點(diǎn)
元素.oninput
用戶在表單控件輸入的時(shí)候執(zhí)行
元素.onchange
表單控件失去焦點(diǎn)后该园,如果其內(nèi)容發(fā)生了改變執(zhí)行
正則表達(dá)式
正則表達(dá)式的創(chuàng)建
- 有兩種方式可以創(chuàng)建正則表達(dá)式
- 通過構(gòu)造函數(shù)創(chuàng)建:
var regEx = new RegExp(/正則表達(dá)式/);
- 通過字面量創(chuàng)建:
var regEx = /正則表達(dá)式/兆解;
- 通過構(gòu)造函數(shù)創(chuàng)建:
- 通過字面量的方式來創(chuàng)建正則用得最多披摄。當(dāng)然如果正則只使用一次亲雪,那么連變量都可以不用,直接寫也可以疚膊。
- 正則表達(dá)式必須用
//
包裹起來
test方法
- 正則表達(dá)式其實(shí)就用來匹配字符串义辕,所以當(dāng)你創(chuàng)建了正則后,肯定還要需要用正則去匹配寓盗。js中正則內(nèi)置了.test方法
-
正則.test(要匹配的值)
灌砖,匹配成功返回true,匹配不成功返回false
預(yù)定義類
- 預(yù)定義類就是已經(jīng)定義好的匹配格式
. === [^\n\r]
匹配除換行和回車意外的任意字符
\d === [0-9]
匹配數(shù)字字符
\D === [^0-9]
匹配非數(shù)字字符
\s === [\f\r\t\n\v]
匹配不可見的字符(換行傀蚌,回車基显,空格等等)
\S === [^\f\r\t\n\v]
匹配非不可見的字符
\w === [a-zA-Z0-9]
匹配單詞字符(所有英文字母,數(shù)字善炫,下劃線)
\W === [^a-zA-Z0-9]
匹配非單詞字符 - ===就是等價(jià)于的意思撩幽,左右作用完全相同。還可以發(fā)現(xiàn)預(yù)定于類,大寫和小寫它們的作用正好相反
字符類
- 字符串就是通過實(shí)際的字符來匹配
- 簡(jiǎn)單類
[]
-
/[abc]/
在正則中單獨(dú)只寫[]就表示或的意思窜醉,例子只要是abc三個(gè)字符任意一個(gè)字符匹配都可以宪萄,注意只有單獨(dú)寫不加其他字符類,才是或
-
- 反向類
^
-
/[^abc]/
反向就是非的意思榨惰,例子中只要不是abc的字符都可以匹配拜英。注意:這個(gè)字符只有放在[]中才表示非
-
- 范圍類
-
-
/[a-c]/
橫線表示范圍,例子中a到c之間的任意字符有就能匹配
-
- 組合類
-
/[a-dA-G0-8]/
組合類實(shí)際就是把多個(gè)范圍組合起來读串,在這個(gè)組合的范圍里有就能匹配聊记,注意范圍類和組合類中的范圍都沒有限制,可以隨便寫
-
邊界符
- 之間寫的驗(yàn)證符號(hào)有一個(gè)局限性恢暖,就是只要字符串中有符合了正則的值排监,那么就會(huì)返回true。但是這種策略在實(shí)際中明顯是不行的杰捂,如果想要正則嚴(yán)格匹配舆床,就需要加上邊界符
-
^
限制開頭-
/^a/
當(dāng)^不在中括號(hào)里時(shí),就是邊界符嫁佳,例子中就表示字符串必須是以a開頭才能匹配
-
-
$
限制結(jié)尾-
/a$/
例子中就表示字符串必須是以a結(jié)尾才能匹配
-
- 嚴(yán)格限制
-
/^a$/
如果限制開頭和限制結(jié)尾一起寫挨队,就說明必須是以a開頭以a結(jié)尾,也就是只有a才能匹配成功蒿往。注意:aa雖然也是a開頭a結(jié)尾盛垦,但是依然不能匹配成功,只有配合量詞才行瓤漏。
-
量詞
- 正則中量詞是用來限制字符允許出現(xiàn)的次數(shù)
-
/x*/
*
號(hào)表示腾夯,x能出現(xiàn)0次或多次,等價(jià)于x>=0 -
/x+/
+
號(hào)表示蔬充,x能出現(xiàn)1次或多次蝶俱,等價(jià)于x>=1 -
/x?/
?
號(hào)表示,x能出現(xiàn)0次或者1次饥漫,等價(jià)于x>=0且x<=1 -
/x{}/
{}
可以自定義x出現(xiàn)的次數(shù)榨呆。如果只寫{1}
表示x只能出現(xiàn)1次;如果寫{1庸队,}
表示x可以出現(xiàn)1次或多次积蜻;如果寫{1,5}
表示x可以出現(xiàn)1-5次,這種完整寫就是限定一個(gè)出現(xiàn)次數(shù)的范圍 - 注意如果想要量詞來修飾一串字符彻消,必須將字符串用()包裹起來浅侨。否則它只會(huì)修飾它緊跟的那個(gè)字符
正則中三個(gè)括號(hào)的區(qū)別
-
{}
大括號(hào)定義字符出現(xiàn)的次數(shù) -
[]
中括號(hào)定義字符的位置,它內(nèi)部的字符串只占一個(gè)位置(就是一個(gè)字符)证膨,只要滿足任意一個(gè)就行 -
()
小括號(hào)用來分組,內(nèi)部的字符串會(huì)劃為一個(gè)整體組
簡(jiǎn)單正則案例
- 注意表單驗(yàn)證需要嚴(yán)格匹配鼓黔,所以建議都加上^$邊界符
- 驗(yàn)證座機(jī)央勒,座機(jī)一般以0開頭不见,用-來分割。前面一共3-4位數(shù)字崔步,后面7-8位數(shù)字
/^0\d{2,3}-\d{7,8}$/
- 驗(yàn)證姓名稳吮,中文在瀏覽器中需要用到unicode編碼,[\u4e00-\u9fa5]這個(gè)范圍基本就含括了所有的中文漢字井濒,并且一般姓名是2個(gè)字以上
/^[\u4e00-\u9fa5]{2,}$/
- 驗(yàn)證qq灶似,qq號(hào)一般是5-11位,且開頭是非0的數(shù)字
/^[1-9]\d{4,10}$/
- 驗(yàn)證手機(jī)瑞你,手機(jī)號(hào)一般是11為酪惭,且有號(hào)段的限制,常見的有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}$/
- 驗(yàn)證郵箱者甲,規(guī)律比較多春感,這里就不說明了,.號(hào)在[]里不用加轉(zhuǎn)義符
/^\w+([-+._]\w+)*@\w+([-.]\w+)*\.\w+([.-]\w+)*$/
關(guān)于遞歸的正確思考方式
- 遞歸的執(zhí)行過程是不符合我們正常思維的虏缸,所以你想一步一步的回溯遞歸是吃力不討好的方式鲫懒。
- 其實(shí)我們對(duì)于遞歸應(yīng)該換一種思考方式,就是很多時(shí)候我們只需要確定推出來的規(guī)律是否正確刽辙,如果規(guī)律是正確的窥岩,其實(shí)沒有必要回溯遞歸執(zhí)行的步驟。如果遞歸執(zhí)行的結(jié)果不對(duì)宰缤,那么很大原因是規(guī)律錯(cuò)了颂翼,而不是程序執(zhí)行錯(cuò)了
DOM綜合考試總結(jié)
- 通過用戶代理字符串識(shí)別瀏覽器的方法叫做代理測(cè)試
- 單選按鈕支持onclick事件
- 只有innerHTML才能替換元素內(nèi)部所有內(nèi)容,包括文本和html標(biāo)簽
- window.onload是在文檔所有元素加載完畢且所有外部文件都加載完畢才執(zhí)行
- 如果一個(gè)函數(shù)沒有寫返回值撵溃,那么調(diào)用該函數(shù)它的返回值為undefined
- 當(dāng)一個(gè)基本數(shù)據(jù)類型調(diào)用屬性或者方法時(shí)疚鲤,js內(nèi)部會(huì)自動(dòng)創(chuàng)建一個(gè)對(duì)應(yīng)基本類型的包裝對(duì)象
- 動(dòng)態(tài)創(chuàng)建對(duì)象的五種方法:
document.write();innerHTML;document.createElement();cloneNode();appendChild()
- for循環(huán)中設(shè)置定時(shí)器不會(huì)立即執(zhí)行,要全部循環(huán)完畢才會(huì)依次執(zhí)行定時(shí)器
- 函數(shù)的聲明提升優(yōu)先級(jí)高于變量提升