正則表達式
創(chuàng)建正則表達式的對象
①使用構(gòu)造函數(shù): var 變量 = new RegExp("正則表達式","匹配模式");這種方式正則表達式前后不需要//
②使用字面量創(chuàng)建: 也可以直接用 /正則表達式/(匹配模式) 的方式創(chuàng)建
使用typeof檢查正則對象,會返回object
第二個參數(shù)匹配模式可以是i或g ①i 忽略大小寫 ②g 表示全局匹配模式
可以使用test()檢查一個字符串是否滿足該正則表達式的規(guī)則,符合返回true,否則返回false。
常用正則語法:
使用 | 表示或者的意思
[]里的內(nèi)容也是或的關(guān)系
[ab] == a|b
[a-z] 任意小寫字母
[A-Z] 任意大寫字母
[A-z] 任意字母,中間包括幾個特殊字字符
[0-9] 任意數(shù)字
[^ ] 除了
^ 表示開頭
$ 表示結(jié)尾
如果在正則表達式中同時使用^ $則要求字符串必須完全符合正則表達式-
補充語法
* \w * - 任意字母、數(shù)字、_ [A-Za-z0-9_] * \W * - 除了字母、數(shù)字、_ [^A-Za-z0-9_] * \d * - 任意的數(shù)字 [0-9] * \D * - 除了數(shù)字 [^0-9] * \s * - 空格 * \S * - 除了空格 * \b * - 單詞邊界 * \B * - 除了單詞邊界 量詞
通過量詞可以設(shè)置一個內(nèi)容出現(xiàn)的次數(shù)
量詞只對它前邊的一個內(nèi)容起作用
{n} 正好出現(xiàn)n次
{m,n} 出現(xiàn)m-n次
{m,} m次以上
+ 至少一個,相當于{1,}
* 0個或多個,相當于{0,}
? 0個或1個,相當于{0,1}字符串配合正則表達式使用的方法
split()
* - 可以將一個字符串拆分為一個數(shù)組
* - 方法中可以傳遞一個正則表達式作為參數(shù),這樣方法將會根據(jù)正則表達式去拆分字符串
* - 這個方法即使不指定全局匹配,也會全都插分search()
* - 可以搜索字符串中是否含有指定內(nèi)容
* - 如果搜索到指定內(nèi)容,則會返回第一次出現(xiàn)的索引,如果沒有搜索到返回-1
* - 它可以接受一個正則表達式作為參數(shù),然后會根據(jù)正則表達式去檢索字符串
* - serach()只會查找第一個,即使設(shè)置全局匹配也沒用match()
* - 可以根據(jù)正則表達式,從一個字符串中將符合條件的內(nèi)容提取出來
* - 默認情況下我們的match只會找到第一個符合要求的內(nèi)容,找到以后就停止檢索
* 我們可以設(shè)置正則表達式為全局匹配模式,這樣就會匹配到所有的內(nèi)容
* 可以為一個正則表達式設(shè)置多個匹配模式,且順序無所謂
* - match()會將匹配到的內(nèi)容封裝到一個數(shù)組中返回,即使只查詢到一個結(jié)果replace()
* - 可以將字符串中指定內(nèi)容替換為新的內(nèi)容
* - 參數(shù):
* 1.被替換的內(nèi)容,可以接受一個正則表達式作為參數(shù)
* 2.新的內(nèi)容
* - 默認只會替換第一個
DOM
文檔對象模型(document object model)
瀏覽器已經(jīng)為我們提供 文檔節(jié)點 對象這個對象是window屬性,可以在頁面中直接使用,文檔節(jié)點代表的是整個網(wǎng)頁
事件
事件就是用戶和瀏覽器之間的交互行為,比如:點擊按鈕,鼠標移動、關(guān)閉窗口。。。
可以為按鈕的對應(yīng)事件綁定處理函數(shù)的形式來響應(yīng)事件,這樣當事件被觸發(fā)時,其對應(yīng)的函數(shù)將會被調(diào)用
btn.onclick = function(){
alert("你還點~~~");
};
像這種為單擊事件綁定的函數(shù),我們稱為單擊響應(yīng)函數(shù)
文檔的加載
瀏覽器在加載一個頁面時,是按照自上向下的順序加載的,讀取到一行就運行一行,如果將script標簽寫到頁面的上邊,在代碼執(zhí)行時,頁面還沒有加載,頁面沒有加載DOM對象也沒有加載,會導致無法獲取到DOM對象
-
onload事件會在整個頁面加載完成之后才觸發(fā),為window綁定一個onload事件,該事件對應(yīng)的響應(yīng)函數(shù)將會在頁面加載完成之后執(zhí)行,這樣可以確保我們的代碼執(zhí)行時所有的DOM對象已經(jīng)加載完畢了
window.onload = function(){ ...... }
dom查詢
常用方法:
document.getElementById() 根據(jù)id獲取元素
document.getElementsByTagName() 根據(jù)標簽名獲取元素
document.getElementsByClassName() 根據(jù)類名獲取元素
.innerHTML 獲取當前元素的內(nèi)容
.childNodes 獲取當前元素的所有子節(jié)點,返回一個類數(shù)組
.firstChild 獲取當前元素的第一個子節(jié)點
.firstElementChild 獲取當前元素的第一個子元素
.previousSibling .nextSibling 獲取當前元素的兄弟節(jié)點
.nextElementSibling、.previousElementSibling 獲取當前元素的兄弟元素
.parentNode 獲取當前元素的父節(jié)點其他方法
document.documentElement 保存的是html根標簽
document.all 代表頁面中所有的元素
在document中有一個屬性body,它保存的是body的引用 var body = document.body;
document.querySelector() 采用css選擇器語法來選擇指定元素,注意傳入的參數(shù)是字符串,只會返回一個,返回多個需要使用document.querySelectorAll()方法
appendChild() 用于向一個父節(jié)點中添加一個新的子節(jié)點
用法:父節(jié)點.appendChild(子節(jié)點);
document.createElement() 可以用于創(chuàng)建一個元素節(jié)點對象,它需要一個標簽名作為參數(shù),
將會根據(jù)該標簽名創(chuàng)建元素節(jié)點對象,并將創(chuàng)建好的對象作為返回值返回
insertBefore() 可以在指定的子節(jié)點前插入新的子節(jié)點 語法:父節(jié)點.insertBefore(新節(jié)點,舊節(jié)點);
document.createTextNode() 可以用來創(chuàng)建一個文本節(jié)點對象,
需要一個文本內(nèi)容(字符串形式)作為參數(shù),將會根據(jù)該內(nèi)容創(chuàng)建文本節(jié)點,并將新的節(jié)點返回
replaceChild() 可以使用指定的子節(jié)點替換已有的子節(jié)點 語法:父節(jié)點.replaceChild(新節(jié)點,舊節(jié)點);
removeChild() 可以刪除一個子節(jié)點 語法:父節(jié)點.removeChild(子節(jié)點);
getElementsByClassName()可以根據(jù)class屬性值獲取一組元素節(jié)點對象,但是該方法不支持IE8及以下的瀏覽器