javaWeb核心技術(shù)第四篇之Javascript第二篇事件和正則表達式

- 事件

? - 表單提交(掌握)

? ? "onsubmit"

? - 單擊事件(掌握)

? ? "onclick"

? - 頁面加載成功事件(掌握)

? ? "onload"

? - 焦點事件:(掌握)

? ? - 獲取焦點

? ? ? "onfocus"

? ? - 失去焦點

? ? ? "onblur"

? - 表單事件(了解)

? ? - ondblclick 雙擊事件

? ? - onreset;? ? ? ? ? ? ? ? 重置

? ? - onchange;? ? ? ? ? ? 改變(熟練使用)

? - 鼠標(biāo)事件:(了解)

? ? - onmouseover 懸停

? ? - onmouseout 移出

? ? - onmousedown 按下

? ? - onmouseup 彈起

? ? - onmousemove 移動

? - 鍵盤事件:(了解)

? ? - onkeydown 按下

? ? - onkeyup 彈起

? ? - onkeypress 按下并彈起

- DOM(文檔對象模型):操作html文檔

? "html加載到內(nèi)存中時,是以一棵樹的形式存在的,可以通過document操作所有的節(jié)點"

? - html文檔與dom樹的關(guān)系:理解

? ? - html里所有的標(biāo)簽、標(biāo)簽的屬性、文本都會轉(zhuǎn)換成dom樹里的節(jié)點

? ? ? - a.整個html文檔抽象成的對象,叫作document? ? 文檔節(jié)點

? ? ? - b.標(biāo)簽轉(zhuǎn)換成的節(jié)點對象,叫作Element? ? ? ? ? 元素節(jié)點

? ? ? - c.標(biāo)簽屬性轉(zhuǎn)換成的節(jié)點對象,叫作Attribute? 屬性節(jié)點

? ? ? - d.文本轉(zhuǎn)換成的節(jié)點對象,叫作Text? ? ? ? ? ? ? ? ? 文本節(jié)點

? - 查詢(獲取元素對象)★★

? ? - document.getElementById("id");? 獲取一個元素對象

? ? - document.getElementsByTagName("標(biāo)簽名"); 獲取一種元素對象? 數(shù)組接收

? ? - document.getElementsByClassName("class屬性值"); 獲取一類元素對象 數(shù)組接收

? ? - document.getElementsByName("name屬性值"); 獲取多個元素對象 數(shù)組接收

? - 元素(element)

? ? - 方式1簡單方法操作:★★

? ? ? - 元素.innerHTML = "<h1>文本內(nèi)容</h1>";? ? 添加

? ? ? - 元素.innerHTML = "";? ? 刪除

? ? - 方式2擴展:了解

? ? ? - 添加

? ? ? ? - var ele? =? document.createElement("標(biāo)簽名"); 創(chuàng)建元素節(jié)點(創(chuàng)建一個標(biāo)簽)

? ? ? ? ? "var ele? =? document.createElement("h1");? ? <h1></h1>"

? ? ? ? - var text =? document.createTextNode("值"); 創(chuàng)建文本節(jié)點(創(chuàng)建一個值)

? ? ? ? ? "var text =? document.createTextNode("");? "客""

? ? ? ? - 元素節(jié)點.appendChild(文本節(jié)點); ? ? ? ? ? ? ? ? 給元素節(jié)點添加文本信息

? ? ? ? ? "ele.appendChild(text);? ? <h1>客</h1>"

? ? ? ? - 元素.appendChild(子元素對象); 將元素節(jié)點追加到指定標(biāo)簽中

? ? ? ? ? "將創(chuàng)建好的h1標(biāo)簽添加到頁面的指定標(biāo)簽中"

? ? ? - 刪除

? ? ? ? - 元素.remove();? 自殺

? - 屬性:(attribute)

? ? - 方式1簡單方法操作:★★

? ? ? - 元素.屬性名稱; ? ? ? ? ? ? ? ? 獲取指定屬性的值

? ? ? - 元素.屬性名稱 = "屬性值"; 設(shè)置指定屬性的值

? ? - 方式2擴展:了解

? ? ? - 查(獲取):

? ? ? ? - 元素.getAttribute("屬性名稱");

? ? ? - 增:

? ? ? ? - 元素.setAttribute("屬性名稱","屬性值");

? ? ? - 刪:

? ? ? ? - 元素.removeAttribute("屬性名稱");

- 引用數(shù)據(jù)類型(對象)

? - 注意:string,number,boolen稱為偽對象,可以直接使用相應(yīng)的方法或?qū)傩?/p>

? - Array:數(shù)組

? ? - 語法:

? ? ? - new Array();? 創(chuàng)建空數(shù)組

? ? ? - new Array(3);? 創(chuàng)建包含指定個數(shù)的數(shù)組

? ? ? - new Array(ele1,ele2...);? 創(chuàng)建包含指定元素的數(shù)組

? ? - 特征:

? ? ? - 數(shù)組長度可變

? ? ? - 數(shù)組中可以存放任何類型的值

? ? - 常用屬性

? ? ? - length? 長度

? ? - 常用方法

? ? ? - join("分隔符");? 按指定的分隔符分割

? ? ? - shift(); 刪除并返回數(shù)組中的第一個元素

? ? ? - unshift();? 向數(shù)組的開頭添加一個或多個元素,并返回新數(shù)組的長度

? ? ? - pop();? 刪除并返回數(shù)組中的最后一個元素

? ? ? - push();? 向數(shù)組的末尾添加一個或多個元素,返回新數(shù)組的長度

? ? ? - sort();? 操作數(shù)組結(jié)構(gòu)? 對數(shù)組進行排序

? ? ? ? "http://初始化設(shè)置元素的時候,排序不起作用的"

? ? ? - reverse();? 顛倒數(shù)組中元素的順序

? - String

? ? - 語法

? ? ? - new String();? 返回一個object對象

? ? - 常用屬性

? ? ? - length

? ? - 常用方法

? ? ? - substring(startindex,endindex);

? ? ? - slice(startindex,endindex);

? ? ? - charAt();

? ? ? - split();

? - Number

? ? - 語法:

? ? ? - new Number(); 返回一個object對象

? - Boolean

? ? - new Boolean();? 返回一個object對象

? ? - Boolean(值);? 將給定值轉(zhuǎn)為Boolean類型

? - Math

? ? - 常用操作

? ? ? - Math.round();

? ? ? - Math.PI;

? ? ? - Math.random();

? - Date

? ? - 語法

? ? ? - new Date();

? ? - 常用方法

? ? ? - toLocaleString();? 轉(zhuǎn)為字符串

? - reg(正則)

? ? - 1.編寫正則表達式

? ? ? - 格式:? /^正則表達式$/

? ? - 2.校驗

? ? ? - 正則表達式.test();? 返回boolean類型的值

? - 全局函數(shù)

? ? - parseInt();? 嘗試轉(zhuǎn)換為Int類型

? ? - parseFloat();? 嘗試轉(zhuǎn)換為float類型

? ? - String(); 強制轉(zhuǎn)換為String類型

? ? - Number(); 強制轉(zhuǎn)換為number類型

? ? - encodeURI();? ? 編碼

? ? - decodeURI();? 解碼

? ? - eval();? 將字符串轉(zhuǎn)換稱js可以執(zhí)行的代碼

/*

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>正則表達式,常用的正則表達式,js正則表達式,正則表達式數(shù)字,正則表達式空格</title>

<meta name="Description" content="正則表達式(英文:Regular Expression)在計算機科學(xué)中,是指一個用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串。正則表達式通??s寫成“regex”,單數(shù)有regexp、regex,復(fù)數(shù)有regexps、regexes、regexen。" />

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

<meta http-equiv="Content-Language" content="zh-CN" />

<base target="_blank" />

<link rel="stylesheet" type="text/css" />

<link rel="stylesheet" type="text/css" />

<style type="text/css" rel="stylesheet" media="screen" />

/* Copyright (c) 2006-2009 114.xixik.com All rights reserved. */

table,td,th{

border-collapse:collapse;

font-size:14px;

}

table{

width:778px;

}

.code{

padding:2px;

border:1px #CCC solid;

background-color:#e5e5e5;

font-family:Fixedsys;

}

</style>

</head>

<body>

<div class="commonContainer">

<div class="noborder">

<div class="mainContainer">

<h2>常用的正則表達式</h2>

<P><STRONG>常用正則表達式</STRONG></P>

<P>正則表達式用于字符串處理、表單驗證等場合,實用高效?,F(xiàn)將一些常用的表達式收集于此,以備不時之需。</P>

<P>用戶名:/^[a-z0-9_-]{3,16}$/</P>

<P>密碼:/^[a-z0-9_-]{6,18}$/</P>

<P>十六進制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/</P>

<P>電子郵箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/</P>

<P>URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/</P>

<P>IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/</P>

<P>HTML 標(biāo)簽:/^&lt;([a-z]+)([^&lt;]+)*(?:&gt;(.*)&lt;\/\1&gt;|\s+\/&gt;)$/</P>

<P>Unicode編碼中的漢字范圍:/^[u4e00-u9fa5],{0,}$/</P>

<P>匹配中文字符的正則表達式: [\u4e00-\u9fa5]<BR>評注:匹配中文還真是個頭疼的事,有了這個表達式就好辦了</P>

<P>匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]<BR>評注:可以用來計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)</P>

<P>匹配空白行的正則表達式:\n\s*\r<BR>評注:可以用來刪除空白行</P>

<P>匹配HTML標(biāo)記的正則表達式:&lt;(\S*?)[^&gt;]*&gt;.*?&lt;/\1&gt;|&lt;.*? /&gt;<BR>評注:網(wǎng)上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復(fù)雜的嵌套標(biāo)記依舊無能為力</P>

<P>匹配首尾空白字符的正則表達式:^\s*|\s*$<BR>評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式</P>

<P>匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<BR>評注:表單驗證時很實用</P>

<P>匹配網(wǎng)址URL的正則表達式:[a-zA-z]+://[^\s]*<BR>評注:網(wǎng)上流傳的版本功能很有限,上面這個基本可以滿足需求</P>

<P>匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$<BR>評注:表單驗證時很實用</P>

<P>匹配國內(nèi)電話號碼:\d{3}-\d{8}|\d{4}-\d{7}<BR>評注:匹配形式如 0511-4405222 或 021-87888822</P>

<P>匹配騰訊QQ號:[1-9][0-9]{4,}<BR>評注:騰訊QQ號從10000開始</P>

<P>匹配中國大陸郵政編碼:[1-9]\d{5}(?!\d)<BR>評注:中國大陸郵政編碼為6位數(shù)字</P>

<P>匹配身份證:\d{15}|\d{18}<BR>評注:中國大陸的身份證為15位或18位</P>

<P>匹配ip地址:\d+\.\d+\.\d+\.\d+<BR>評注:提取ip地址時有用</P>

<P>匹配特定數(shù)字:<BR>^[1-9]\d*$    //匹配正整數(shù)<BR>^-[1-9]\d*$   //匹配負整數(shù)<BR>^-?[1-9]\d*$   //匹配整數(shù)<BR>^[1-9]\d*|0$  //匹配非負整數(shù)(正整數(shù) + 0)<BR>^-[1-9]\d*|0$   //匹配非正整數(shù)(負整數(shù) + 0)<BR>^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮點數(shù)<BR>^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配負浮點數(shù)<BR>^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮點數(shù)<BR>^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非負浮點數(shù)(正浮點數(shù) + 0)<BR>^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮點數(shù)(負浮點數(shù) + 0)<BR>評注:處理大量數(shù)據(jù)時有用,具體應(yīng)用時注意修正</P>

<P>匹配特定字符串:<BR>^[A-Za-z]+$  //匹配由26個英文字母組成的字符串<BR>^[A-Z]+$  //匹配由26個英文字母的大寫組成的字符串<BR>^[a-z]+$  //匹配由26個英文字母的小寫組成的字符串<BR>^[A-Za-z0-9]+$  //匹配由數(shù)字和26個英文字母組成的字符串<BR>^\w+$  //匹配由數(shù)字、26個英文字母或者下劃線組成的字符串</P>

<h2>表達式全集</h2>

<P>正則表達式有多種不同的風(fēng)格。下表是在PCRE中元字符及其在正則表達式上下文中的行為的一個完整列表:</P>

<table width="778" borderColor=#cccccc cellSpacing=1 cellPadding=2 border=1>

<tr>

<th>字符</th>

<th>描述</th>

</tr>

<tr>

<th style="text-align:center;">\</th>

<td>將下一個字符標(biāo)記為一個特殊字符、或一個原義字符、或一個向后引用、或一個八進制轉(zhuǎn)義符。例如,“<code>n</code>”匹配字符“<code>n</code>”?!?lt;code>\n</code>”匹配一個換行符。序列“<code>\\</code>”匹配“<code>\</code>”而“<code>\(</code>”則匹配“<code>(</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">^</th>

<td>匹配輸入字符串的開始位置。如果設(shè)置了RegExp對象的Multiline屬性,^也匹配“<code>\n</code>”或“<code>\r</code>”之后的位置。</td>

</tr>

<tr>

<th style="text-align:center;">$</th>

<td>匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp對象的Multiline屬性,$也匹配“<code>\n</code>”或“<code>\r</code>”之前的位置。</td>

</tr>

<tr>

<th style="text-align:center;">*</th>

<td>匹配前面的子表達式零次或多次。例如,zo*能匹配“<code>z</code>”以及“<code>zoo</code>”。*等價于{0,}。</td>

</tr>

<tr>

<th style="text-align:center;">+</th>

<td>匹配前面的子表達式一次或多次。例如,“<code>zo+</code>”能匹配“<code>zo</code>”以及“<code>zoo</code>”,但不能匹配“<code>z</code>”。+等價于{1,}。</td>

</tr>

<tr>

<th style="text-align:center;">?</th>

<td>匹配前面的子表達式零次或一次。例如,“<code>do(es)?</code>”可以匹配“<code>do</code>”或“<code>does</code>”中的“<code>do</code>”。?等價于{0,1}。</td>

</tr>

<tr>

<th style="text-align:center;">{<span style="font-family:Times New Roman; font-style:italic;">n</span>}</th>

<td><span style="font-family:Times New Roman; font-style:italic;">n</span>是一個非負整數(shù)。匹配確定的<span style="font-family:Times New Roman; font-style:italic;">n</span>次。例如,“<code>o{2}</code>”不能匹配“<code>Bob</code>”中的“<code>o</code>”,但是能匹配“<code>food</code>”中的兩個o。</td>

</tr>

<tr>

<th style="text-align:center;">{<span style="font-family:Times New Roman; font-style:italic;">n</span>,}</th>

<td><span style="font-family:Times New Roman; font-style:italic;">n</span>是一個非負整數(shù)。至少匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>次。例如,“<code>o{2,}</code>”不能匹配“<code>Bob</code>”中的“<code>o</code>”,但能匹配“<code>foooood</code>”中的所有o?!?lt;code>o{1,}</code>”等價于“<code>o+</code>”?!?lt;code>o{0,}</code>”則等價于“<code>o*</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">{<span style="font-family:Times New Roman; font-style:italic;">n</span>,<span style="font-family:Times New Roman; font-style:italic;">m</span>}</th>

<td><span style="font-family:Times New Roman; font-style:italic;">m</span>和<span style="font-family:Times New Roman; font-style:italic;">n</span>均為非負整數(shù),其中<span style="font-family:Times New Roman; font-style:italic;">n</span>&lt;=<span style="font-family:Times New Roman; font-style:italic;">m</span>。最少匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>次且最多匹配<span style="font-family:Times New Roman; font-style:italic;">m</span>次。例如,“<code>o{1,3}</code>”將匹配“<code>fooooood</code>”中的前三個o。“<code>o{0,1}</code>”等價于“<code>o?</code>”。請注意在逗號和兩個數(shù)之間不能有空格。</td>

</tr>

<tr>

<th style="text-align:center;">?</th>

<td>當(dāng)該字符緊跟在任何一個其他限制符(*,+,?,{<span style="font-family:Times New Roman; font-style:italic;">n</span>},{<span style="font-family:Times New Roman; font-style:italic;">n</span>,},{<span style="font-family:Times New Roman; font-style:italic;">n</span>,<span style="font-family:Times New Roman; font-style:italic;">m</span>})后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串“<code>oooo</code>”,“<code>o+?</code>”將匹配單個“<code>o</code>”,而“<code>o+</code>”將匹配所有“<code>o</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">.</th>

<td>匹配除“<code>\</code><span style="font-family:Times New Roman; font-style:italic;"><code>n</code></span>”之外的任何單個字符。要匹配包括“<code>\</code><span style="font-family:Times New Roman; font-style:italic;"><code>n</code></span>”在內(nèi)的任何字符,請使用像“<code>[.\</code><span style="font-family:Times New Roman; font-style:italic;"><code>n</code></span><code>]</code>”的模式。</td>

</tr>

<tr>

<th style="text-align:center;">(pattern)</th>

<td>匹配pattern并獲取這一匹配。所獲取的匹配可以從產(chǎn)生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要匹配圓括號字符,請使用“<code>\(</code>”或“<code>\)</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">(?:pattern)</th>

<td>匹配pattern但不獲取匹配結(jié)果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用或字符“<code>(|)</code>”來組合一個模式的各個部分是很有用。例如“<code>industr(?:y|ies)</code>”就是一個比“<code>industry|industries</code>”更簡略的表達式。</td>

</tr>

<tr>

<th style="text-align:center;">(?=pattern)</th>

<td>正向預(yù)查,在任何匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,“<code>Windows(?=95|98|NT|2000)</code>”能匹配“<code>Windows2000</code>”中的“<code>Windows</code>”,但不能匹配“<code>Windows3.1</code>”中的“<code>Windows</code>”。預(yù)查不消耗字符,也就是說,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始。</td>

</tr>

<tr>

<th style="text-align:center;">(?!pattern)</th>

<td>負向預(yù)查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如“<code>Windows(?!95|98|NT|2000)</code>”能匹配“<code>Windows3.1</code>”中的“<code>Windows</code>”,但不能匹配“<code>Windows2000</code>”中的“<code>Windows</code>”。預(yù)查不消耗字符,也就是說,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始</td>

</tr>

<tr>

<th style="text-align:center;">x|y</th>

<td>匹配x或y。例如,“<code>z|food</code>”能匹配“<code>z</code>”或“<code>food</code>”?!?lt;code>(z|f)ood</code>”則匹配“<code>zood</code>”或“<code>food</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">[xyz]</th>

<td>字符集合。匹配所包含的任意一個字符。例如,“<code>[abc]</code>”可以匹配“<code>plain</code>”中的“<code>a</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">[^xyz]</th>

<td>負值字符集合。匹配未包含的任意字符。例如,“<code>[^abc]</code>”可以匹配“<code>plain</code>”中的“<code>p</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">[a-z]</th>

<td>字符范圍。匹配指定范圍內(nèi)的任意字符。例如,“<code>[a-z]</code>”可以匹配“<code>a</code>”到“<code>z</code>”范圍內(nèi)的任意小寫字母字符。</td>

</tr>

<tr>

<th style="text-align:center;">[^a-z]</th>

<td>負值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。例如,“<code>[^a-z]</code>”可以匹配任何不在“<code>a</code>”到“<code>z</code>”范圍內(nèi)的任意字符。</td>

</tr>

<tr>

<th style="text-align:center;">\b</th>

<td>匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,“<code>er\b</code>”可以匹配“<code>never</code>”中的“<code>er</code>”,但不能匹配“<code>verb</code>”中的“<code>er</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">\B</th>

<td>匹配非單詞邊界。“<code>er\B</code>”能匹配“<code>verb</code>”中的“<code>er</code>”,但不能匹配“<code>never</code>”中的“<code>er</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">\cx</th>

<td>匹配由x指明的控制字符。例如,\cM匹配一個Control-M或回車符。x的值必須為A-Z或a-z之一。否則,將c視為一個原義的“<code>c</code>”字符。</td>

</tr>

<tr>

<th style="text-align:center;">\d</th>

<td>匹配一個數(shù)字字符。等價于[0-9]。</td>

</tr>

<tr>

<th style="text-align:center;">\D</th>

<td>匹配一個非數(shù)字字符。等價于[^0-9]。</td>

</tr>

<tr>

<th style="text-align:center;">\f</th>

<td>匹配一個換頁符。等價于\x0c和\cL。</td>

</tr>

<tr>

<th style="text-align:center;">\n</th>

<td>匹配一個換行符。等價于\x0a和\cJ。</td>

</tr>

<tr>

<th style="text-align:center;">\r</th>

<td>匹配一個回車符。等價于\x0d和\cM。</td>

</tr>

<tr>

<th style="text-align:center;">\s</th>

<td>匹配任何空白字符,包括空格、制表符、換頁符等等。等價于[\f\n\r\t\v]。</td>

</tr>

<tr>

<th style="text-align:center;">\S</th>

<td>匹配任何非空白字符。等價于[^\f\n\r\t\v]。</td>

</tr>

<tr>

<th style="text-align:center;">\t</th>

<td>匹配一個制表符。等價于\x09和\cI。</td>

</tr>

<tr>

<th style="text-align:center;">\v</th>

<td>匹配一個垂直制表符。等價于\x0b和\cK。</td>

</tr>

<tr>

<th style="text-align:center;">\w</th>

<td>匹配包括下劃線的任何單詞字符。等價于“<code>[A-Za-z0-9_]</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">\W</th>

<td>匹配任何非單詞字符。等價于“<code>[^A-Za-z0-9_]</code>”。</td>

</tr>

<tr>

<th style="text-align:center;">\x<span style="font-family:Times New Roman; font-style:italic;">n</span></th>

<td>匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>,其中<span style="font-family:Times New Roman; font-style:italic;">n</span>為十六進制轉(zhuǎn)義值。十六進制轉(zhuǎn)義值必須為確定的兩個數(shù)字長。例如,“<code>\x41</code>”匹配“<code>A</code>”。“<code>\x041</code>”則等價于“<code>\x04&amp;1</code>”。正則表達式中可以使用ASCII編碼。.</td>

</tr>

<tr>

<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">num</span></th>

<td>匹配<span style="font-family:Times New Roman; font-style:italic;">num</span>,其中<span style="font-family:Times New Roman; font-style:italic;">num</span>是一個正整數(shù)。對所獲取的匹配的引用。例如,“<code>(.)\1</code>”匹配兩個連續(xù)的相同字符。</td>

</tr>

<tr>

<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">n</span></th>

<td>標(biāo)識一個八進制轉(zhuǎn)義值或一個向后引用。如果\<span style="font-family:Times New Roman; font-style:italic;">n</span>之前至少<span style="font-family:Times New Roman; font-style:italic;">n</span>個獲取的子表達式,則<span style="font-family:Times New Roman; font-style:italic;">n</span>為向后引用。否則,如果<span style="font-family:Times New Roman; font-style:italic;">n</span>為八進制數(shù)字(0-7),則<span style="font-family:Times New Roman; font-style:italic;">n</span>為一個八進制轉(zhuǎn)義值。</td>

</tr>

<tr>

<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">nm</span></th>

<td>標(biāo)識一個八進制轉(zhuǎn)義值或一個向后引用。如果\<span style="font-family:Times New Roman; font-style:italic;">nm</span>之前至少有<span style="font-family:Times New Roman; font-style:italic;">nm</span>個獲得子表達式,則<span style="font-family:Times New Roman; font-style:italic;">nm</span>為向后引用。如果\<span style="font-family:Times New Roman; font-style:italic;">nm</span>之前至少有<span style="font-family:Times New Roman; font-style:italic;">n</span>個獲取,則<span style="font-family:Times New Roman; font-style:italic;">n</span>為一個后跟文字<span style="font-family:Times New Roman; font-style:italic;">m</span>的向后引用。如果前面的條件都不滿足,若<span style="font-family:Times New Roman; font-style:italic;">n</span>和<span style="font-family:Times New Roman; font-style:italic;">m</span>均為八進制數(shù)字(0-7),則\<span style="font-family:Times New Roman; font-style:italic;">nm</span>將匹配八進制轉(zhuǎn)義值<span style="font-family:Times New Roman; font-style:italic;">nm</span>。</td>

</tr>

<tr>

<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">nml</span></th>

<td>如果<span style="font-family:Times New Roman; font-style:italic;">n</span>為八進制數(shù)字(0-3),且<span style="font-family:Times New Roman; font-style:italic;">m和l</span>均為八進制數(shù)字(0-7),則匹配八進制轉(zhuǎn)義值<span style="font-family:Times New Roman; font-style:italic;">nm</span>l。</td>

</tr>

<tr>

<th style="text-align:center;">\u<span style="font-family:Times New Roman; font-style:italic;">n</span></th>

<td>匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>,其中<span style="font-family:Times New Roman; font-style:italic;">n</span>是一個用四個十六進制數(shù)字表示的Unicode字符。例如,\u00A9匹配版權(quán)符號(?)。</td>

</tr>

</table>

<p>以下是以PHP的語法所寫的示例 </p>

<p>驗證字符串是否只含數(shù)字與英文,字符串長度并在4~16個字符之間 </p>

<DIV dir=ltr style="TEXT-ALIGN: left">

<DIV style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw2><STRONG>&lt;?php</STRONG></SPAN>

<SPAN class=re0><FONT color=#000088>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st_h><FONT color=#0000ff>'a1234'</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

<SPAN class=kw1><FONT color=#b1b100>if</FONT></SPAN> <SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=kw3><FONT color=#990000>preg_match</FONT></SPAN><SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=st0><FONT color=#0000ff>"^[a-zA-Z0-9]{4,16}$"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>,</FONT></SPAN> <SPAN class=re0><FONT color=#000088>$str</FONT></SPAN><FONT color=#009900><SPAN class=br0>)</SPAN><SPAN class=br0>)</SPAN></FONT> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>

? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證成功"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

<SPAN class=br0><FONT color=#009900>}</FONT></SPAN> <SPAN class=kw1><FONT color=#b1b100>else</FONT></SPAN> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>

? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證失敗"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

<SPAN class=br0><FONT color=#009900>}</FONT></SPAN>

<SPAN class=sy1><STRONG>?&gt;</STRONG></SPAN>

</PRE></DIV></DIV>

<p>簡易的臺灣身份證字號驗證 </p>

<DIV class=mw-geshi dir=ltr style="TEXT-ALIGN: left">

<DIV class="php source-php" style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw2><STRONG>&lt;?php</STRONG></SPAN>

<SPAN class=re0><FONT color=#000088>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st_h><FONT color=#0000ff>'a1234'</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

<SPAN class=kw1><FONT color=#b1b100>if</FONT></SPAN> <SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=kw3><FONT color=#990000>preg_match</FONT></SPAN><SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=st0><FONT color=#0000ff>"/^\w[12]\d{8}$/"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>,</FONT></SPAN> <SPAN class=re0><FONT color=#000088>$str</FONT></SPAN><FONT color=#009900><SPAN class=br0>)</SPAN><SPAN class=br0>)</SPAN></FONT> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>

? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證成功"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

<SPAN class=br0><FONT color=#009900>}</FONT></SPAN> <SPAN class=kw1><FONT color=#b1b100>else</FONT></SPAN> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>

? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證失敗"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

<SPAN class=br0><FONT color=#009900>}</FONT></SPAN>

<SPAN class=sy1><STRONG>?&gt;</STRONG></SPAN>

</PRE></DIV></DIV>

<p>以下示例是用 Perl 語言寫的,與上面的示例功能相同 </p>

<DIV class=mw-geshi dir=ltr style="TEXT-ALIGN: left">

<DIV class="perl source-perl" style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw3><FONT color=#000066>print</FONT></SPAN> <SPAN class=re0><FONT color=#0000ff>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"a1234"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=~</FONT></SPAN> <SPAN class=kw3><FONT color=#000066>m</FONT></SPAN><SPAN class=sy0><FONT color=#339933>:^</FONT></SPAN><SPAN class=br0><FONT color=#009900>[</FONT></SPAN>a<SPAN class=sy0><FONT color=#339933>-</FONT></SPAN>zA<SPAN class=sy0><FONT color=#339933>-</FONT></SPAN>Z0<SPAN class=sy0><FONT color=#339933>-</FONT></SPAN><SPAN class=nu0><FONT color=#cc66cc>9</FONT></SPAN><FONT color=#009900><SPAN class=br0>]</SPAN><SPAN class=br0>{</SPAN></FONT><SPAN class=nu0><FONT color=#cc66cc>4</FONT></SPAN><SPAN class=sy0><FONT color=#339933>,</FONT></SPAN><SPAN class=nu0><FONT color=#cc66cc>16</FONT></SPAN><SPAN class=br0><FONT color=#009900>}</FONT></SPAN><SPAN class=co5><FONT color=#0000ff>$:</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>?</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"COMFIRM"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>:</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"FAILED"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

</PRE></DIV></DIV>

<DIV class=mw-geshi dir=ltr style="TEXT-ALIGN: left">

<DIV class="perl source-perl" style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw3><FONT color=#000066>print</FONT></SPAN> <SPAN class=re0><FONT color=#0000ff>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"a1234"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=~</FONT></SPAN> <SPAN class=kw3><FONT color=#000066>m</FONT></SPAN><SPAN class=st0><FONT color=#ff0000>"^</FONT><SPAN class=es0><STRONG><FONT color=#000099>\w</FONT></STRONG></SPAN><FONT color=#ff0000>[12]</FONT><SPAN class=es0><STRONG><FONT color=#000099>\d</FONT></STRONG></SPAN><FONT color=#ff0000>{8}$"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>?</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"COMFIRM"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>:</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"INVAILD"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>

</PRE></DIV></DIV>

<h2>如何寫出高效率的正則表達式</h2>

<P>如果純粹是為了挑戰(zhàn)自己的正則水平,用來實現(xiàn)一些特效(例如使用正則表達式計算質(zhì)數(shù)、解線性方程),效率不是問題;如果所寫的正則表達式只是為了滿足一兩次、幾十次的運行,優(yōu)化與否區(qū)別也不太大。但是,如果所寫的正則表達式會百萬次、千萬次地運行,效率就是很大的問題了。我這里總結(jié)了幾條提升正則表達式運行效率的經(jīng)驗(工作中學(xué)到的,看書學(xué)來的,自己的體會),貼在這里。如果您有其它的經(jīng)驗而這里沒有提及,歡迎賜教。</P>

<P>為行文方便,先定義兩個概念。</P>

<p><B>誤匹配</B>:指正則表達式所匹配的內(nèi)容范圍超出了所需要范圍,有些文本明明不符合要求,但是被所寫的正則式“擊中了”。例如,如果使用<FONT color=#3366ff>\d{11}</FONT>來匹配11位的手機號,<FONT color=#3366ff>\d{11}</FONT>不單能匹配正確的手機號,它還會匹配<FONT color=#cc33cc>98765432100</FONT>這樣的明顯不是手機號的字符串。我們把這樣的匹配稱之為誤匹配。

<p><B>漏匹配</B>:指正則表達式所匹配的內(nèi)容所規(guī)定的范圍太狹窄,有些文本確實是所需要的,但是所寫的正則沒有將這種情況囊括在內(nèi)。例如,使用<FONT color=#3366ff>\d{18}</FONT>來匹配18位的身份證號碼,就會漏掉結(jié)尾是字母X的情況。 </LI></UL>

<P>寫出一條正則表達式,既可能<B>只出現(xiàn)</B>誤匹配(條件寫得極寬松,其范圍大于目標(biāo)文本),也可能<B>只出現(xiàn)</B>漏匹配(只描述了目標(biāo)文本中多種情況種的一種),還可能<B>既有誤匹配又有漏匹配</B>。例如,使用<FONT color=#3366ff>\w+\.com</FONT>來匹配.com結(jié)尾的域名,既會誤匹配<FONT color=#cc33cc>abc_.com</FONT>這樣的字串(合法的域名中不含下劃線,<FONT color=#3366ff>\w</FONT>包含了下劃線這種情況),又會漏掉<FONT color=#cc33cc>ab-c.com</FONT>這樣的域名(合法域名中可以含中劃線,但是<FONT color=#3366ff>\w</FONT>不匹配中劃線)。</P>

<P>精準的正則表達式意味著既無誤匹配且無漏匹配。當(dāng)然,現(xiàn)實中存在這樣的情況:只能看到有限數(shù)量的文本,根據(jù)這些文本寫規(guī)則,但是這些規(guī)則將會用到海量的文本中。這種情況下,盡可能地(如果不是完全地)消除誤匹配以及漏匹配,并提升運行效率,就是我們的目標(biāo)。本文所提出的經(jīng)驗,主要是針對這種情況。</P>

<p><B>掌握語法細節(jié)</B>。正則表達式在各種語言中,其語法大致相同,細節(jié)各有千秋。明確所使用語言的正則的語法的細節(jié),是寫出正確、高效正則表達式的基礎(chǔ)。例如,perl中與<FONT color=#3366ff>\w</FONT>等效的匹配范圍是<FONT color=#3366ff>[a-zA-Z0-9_]</FONT>;perl正則式不支持肯定逆序環(huán)視中使用可變的重復(fù)(variable repetition inside lookbehind,例如<FONT color=#3366ff>(?&lt;=.*)abc</FONT>),但是.Net語法是支持這一特性的;又如,JavaScript連逆序環(huán)視(Lookbehind,如<FONT color=#3366ff>(?&lt;=ab)c</FONT>)都不支持,而perl和python是支持的。《精通正則表達式》第3章《正則表達式的特性和流派概覽》明確地列出了各大派系正則的異同,這篇文章也簡要地列出了幾種常用語言、工具中正則的比較。對于具體使用者而言,至少應(yīng)該詳細了解正在使用的那種工作語言里正則的語法細節(jié)。

<p><B>先粗后精,</B><B>先加后減</B>。使用正則表達式語法對于目標(biāo)文本進行描述和界定,可以像畫素描一樣,先大致勾勒出框架,再逐步在局步實現(xiàn)細節(jié)。仍舉剛才的手機號的例子,先界定<FONT color=#3366ff>\d{11}</FONT>,總不會錯;再細化為<FONT color=#3366ff>1[358]\d{9}</FONT>,就向前邁了一大步(至于第二位是不是3、5、8,這里無意深究,只舉這樣一個例子,說明逐步細化的過程)。這樣做的目的是先消除漏匹配(剛開始先盡可能多地匹配,做加法),然后再一點一點地消除誤匹配(做減法)。這樣有先有后,在考慮時才不易出錯,從而向“不誤不漏”這個目標(biāo)邁進。

<p><B>留有余地</B>。所能看到的文本sample是有限的,而待匹配檢驗的文本是海量的,暫時不可見的。對于這樣的情況,在寫正則表達式時要跳出所能見到的文本的圈子,開拓思路,作出“戰(zhàn)略性前瞻”。例如,經(jīng)常收到這樣的垃圾短信:“發(fā)*票”、“發(fā)#漂”。如果要寫規(guī)則屏蔽這樣煩人的垃圾短信,不但要能寫出可以匹配當(dāng)前文本的正則表達式 <FONT color=#3366ff>發(fā)[*#](?:票|漂)</FONT>,還要能夠想到 <FONT color=#3366ff>發(fā).(?:票|漂|飄)</FONT>之類可能出現(xiàn)的“變種”。這在具體的領(lǐng)域或許會有針對性的規(guī)則,不多言。這樣做的目的是消除漏匹配,延長正則表達式的生命周期。

<p><B>明確</B>。具體說來,就是<B>謹慎</B>用點號這樣的元字符,<B>盡可能</B>不用星號和加號這樣的任意量詞。只要能確定范圍的,例如\w,就不要用點號;只要能夠預(yù)測重復(fù)次數(shù)的,就不要用任意量詞。例如,寫析取twitter消息的腳本,假設(shè)一條消息的xml正文部分結(jié)構(gòu)是&lt;span class=”msg”&gt;…&lt;/span&gt;且正文中無尖括號,那么<FONT color=#3366ff>&lt;span class=”msg”&gt;[^&lt;]{1,480}&lt;/span&gt;</FONT>這種寫法<B>的思路</B>要好于<FONT color=#3366ff>&lt;span class=”msg”&gt;.*&lt;/span&gt;</FONT>,原因有二:一是使用<FONT color=#3366ff>[^&lt;]</FONT>,它保證了文本的范圍不會超出下一個小于號所在的位置;二是明確長度范圍,<FONT color=#3366ff>{1,480}</FONT>,其依據(jù)是一條twitter消息大致能的字符長度范圍。當(dāng)然,480這個長度是否正確還可推敲,但是這種思路是值得借鑒的。說得狠一點,“濫用點號、星號和加號是不環(huán)保、不負責(zé)任的做法”。

<p><B>不要讓稻草壓死駱駝</B>。每使用一個普通括號()而不是非捕獲型括號<FONT color=#3366ff>(?:…)</FONT>,就會保留一部分內(nèi)存等著你再次訪問。這樣的正則表達式、無限次地運行次數(shù),無異于一根根稻草的堆加,終于能將駱駝壓死。養(yǎng)成合理使用(?:…)括號的習(xí)慣。

<p><B>寧簡勿繁</B>。將一條復(fù)雜的正則表達式拆分為兩條或多條簡單的正則表達式,編程難度會降低,運行效率會提升。例如用來消除行首和行尾空白字符的正則表達式<FONT color=#3366ff>s/^\s+|\s+$//g;</FONT>,其運行效率理論上要低于<FONT color=#3366ff>s/^\s+//g; s/\s+$//g;</FONT> 。這個例子出自《精通正則表達式》第五章,書中對它的評論是“它幾乎總是最快的,而且顯然最容易理解”。既快又容易理解,何樂而不為?工作中我們還有其它的理由要將C==<FONT color=#3366ff>(A|B)</FONT>這樣的正則表達式拆為A和B兩條表達式分別執(zhí)行。例如,雖然A和B這兩種情況只要有一種能夠擊中所需要的文本模式就會成功匹配,但是如果只要有一條子表達式(例如A)會產(chǎn)生誤匹配,那么不論其它的子表達式(例如B)效率如何之高,范圍如何精準,C的總體精準度也會因A而受到影響。

<p><B>巧妙定位</B>。有時候,我們需要匹配的the,是作為單詞的the(兩邊有空格),而不是作為單詞一部分的t-h-e的有序排列(例如toge<FONT color=#cc33cc>the</FONT>r中的the)。在適當(dāng)?shù)臅r候用上<FONT color=#3366ff>^</FONT>,<FONT color=#3366ff>$</FONT>,<FONT color=#3366ff>\b</FONT>等等定位錨點,能有效提升找到成功匹配、淘汰不成功匹配的效率。 </LI></OL></p>

<p style="TEXT-INDENT: 2em"><strong>正則表達式:</strong> <A >http://114.xixik.com/regex/</A></p>

<p style="TEXT-INDENT: 2em"><strong>HTML轉(zhuǎn)義字符:</strong> <A >http://114.xixik.com/character/</A></p>

</div>

</div>

</div>

<script src="http://w.#/c.php?id=30039331" language="JavaScript" charset="gb2312"></script>

</body>

</html>

*/

/*

回顧:

css:

層疊樣式表

作用:

渲染頁面

提供工作效率,將html和樣式分離

和html的整合

方式1:內(nèi)聯(lián)樣式表

通過標(biāo)簽的style屬性? <xxx style="..."/>

方式2:內(nèi)部樣式表

通過head的子標(biāo)簽Style子標(biāo)簽

<style type="text/css">

選擇器{

屬性:值;

屬性1:值1;

}

</style>

方式3:外部樣式表

有一個獨立css文件.后綴名:.css

在html中通過link標(biāo)簽導(dǎo)入

選擇器:

id選擇器

html元素有id屬性且有值? <xx id="d1">

css中通過 # 導(dǎo)入? #d1{...}

類選擇器

html元素有class屬性且有值 <xx class="c1">

css中通過 . 導(dǎo)入 .c1{...}

元素選擇器

css中通過標(biāo)簽名即可? xx{...}

屬性選擇器

html元素有一個屬性且有值 <xx att="val1">

css中通過元素名[屬性="值"]使用? xx[att="val1"]{...}

后代選擇器

選擇器 后代選擇器

錨偽類(了解)

//////////////////

字體 文本 背景 列表 分類(clear display:none block inline)

框模型:

一個元素外邊有內(nèi)邊距 邊框 外邊距

順序:上右下左

//////////////////////////////////////

js

javascript 腳本語言 解釋性 基于對象 事件驅(qū)動函數(shù)

js的組成:

ECMAScript(語法)

BOM(瀏覽器對象模型)

DOM(文檔對象模型)

html和js的整合

方式1:內(nèi)部編寫js

<script type="text/javascript">js代碼</script>

方式2:

外部有一個獨立的js文件? 后綴名:.js

在html中通過script的src屬性導(dǎo)入

<script src="js的路徑"></script>

注意:

一旦使用了src屬性,那么script標(biāo)簽體中的js代碼將不再執(zhí)行了.

變量:

var 變量名=初始化值;

數(shù)據(jù)類型:

原始類型(5種)

Undefined

Null

String 用引號引起來的內(nèi)容

Number

Boolean

通過typeof可以判斷一個值或者變量是否是原始類型,若是原始類型,還可以判斷屬于那種.

typeof 變量|值

引用類型

運算符:

關(guān)系運算符:

兩邊值都是字符串,比較ascii碼

兩邊都是數(shù)字,和java一樣

一邊是數(shù)字,一遍是字符串形式的數(shù)字, 可以比較

一邊是數(shù)字,一遍是普通字符串 可以比較 值永遠是false

等性運算符

"66"==66? true

"666"===666 false

js的語句

if while for 和java一樣

//////////////////

獲取元素:

var obj=document.getElementById("id值");

獲取元素的value屬性

var val=document.getElementById("id值").value;

設(shè)置元素的value屬性

document.getElementById("id值").value="sdfsdf";

獲取元素的標(biāo)簽體

var ht=document.getElementById("id值").innerHTML;

設(shè)置元素的標(biāo)簽體

document.getElementById("id值").innerHTML="ssss";

定義函數(shù):

方式1:function 函數(shù)名(參數(shù)列表){函數(shù)體}

方式2:

var 函數(shù)名=function(參數(shù)列表){函數(shù)體}

注意:

函數(shù)聲明的時候不用聲明返回值類型

參數(shù)列表上不要寫參數(shù)類型

通過return結(jié)束方法和將值返回

事件:

onclick 單擊

onsubmit 表單提交

onload? 頁面加載成功或者元素加載成功

事件和函數(shù)綁定

方式1:通過元素的事件屬性

<xxx onxxx="函數(shù)名(參數(shù)列表)">

方式2:派發(fā)事件

document.getElementById("id值").onxxx=function(){...};

document.getElementById("id值").onxxx=函數(shù)名;

/////////////////////////////////

案例1-定時彈出廣告

需求:

打開頁面后4秒,展示廣告,2秒之后,該廣告隱藏.再停2秒,繼續(xù)展示.

技術(shù)分析:

定時器

定時器(BOM-window對象)

setInterval(code,毫秒數(shù)):周期執(zhí)行

setTimeout(code,毫秒數(shù)):延遲多長事件后 只執(zhí)行一次.

清除定時器

clearInterval(id):

clearTimeout(id):

步驟分析:

1.確定事件

2.編寫函數(shù)

a.獲取元素

b.操作元素

////////////////////////

1.html頁面,先把廣告隱藏

2.頁面加載成功事件 onload

3.編寫函數(shù)

定時器:

操作元素:

document.getElementById("")

操作css屬性

document.getElementById("id").style.屬性="值"

屬性:就是css中屬性 css屬性有"-" 例如:backgroud-color

若有"-" 只需要將"-"刪除,后面第一個字母變大寫即可

注意:

只要是window對象的屬性和方法,可以把window省略

window.onload 等價于 onload

window.setInterval() 等價于 setInterval()

////////////////////

bom(瀏覽器對象模型)總結(jié)

所有的瀏覽器都有5個對象

window:窗口

location:定位信息 (地址欄)

history:歷史

window對象詳解:

如果文檔包含框架(frame 或 iframe 標(biāo)簽),瀏覽器會為 HTML 文檔創(chuàng)建一個 window 對象,

并為每個框架創(chuàng)建一個額外的 window 對象。

常用的屬性:

通過window可以獲取其他的四個對象

window.location 等價域 location

window.history 等價于 history

...

常用的方法

消息框

alert("...."):警告框

confirm("你確定要刪除嗎?"):確定框 返回值:boolean

prompt("請輸入您的姓名"):輸入框 返回值:你輸入的內(nèi)容

定時器

設(shè)置定時器

setInterval(code,毫秒數(shù)):周期執(zhí)行

setTimeout(code,毫秒數(shù)):延遲多長事件后 只執(zhí)行一次.

例如:

setInterval(showAd,4000);

serInterval("showAd()",4000);

清除定時器

clearInterval(id):

clearTimeout(id):

打開和關(guān)閉

open(url):打開

close():關(guān)閉

/////////////////////////

location:定位信息

常用屬性:

href:獲取或者設(shè)置當(dāng)前頁面的url(定位信息)

location.href; 獲取url

location.href="...";設(shè)置url 相當(dāng)于 a標(biāo)簽

//////////////////////

history:歷史

back();后退

forward():向前

★go(int)

go(-1) 相當(dāng)于 back()

go(1) 相當(dāng)于 forward()

//////////////////////////////////////

案例2-表單校驗plus

需求:

提示信息不用彈出框,將信息追加在文本框后面

技術(shù)分析:

確定事件 表單提交的時候 onsubmit

文本框失去焦點的時候 onblur

編寫函數(shù)

獲取元素

document.getElementById("id值");

操作元素(獲取元素的值,操作標(biāo)簽體,操作標(biāo)簽value屬性)

/////////////////

步驟分析:

1.表單

2.表單提交的時候 確定事件 onsubmit()

3.校驗用戶名和密碼

4.獲取用戶名和密碼的對象及值

5.判斷內(nèi)容,當(dāng)為空的時候,獲取響應(yīng)的span元素

往span元素中顯示錯誤信息

////////////////////////

注意:

在方法中(function()) this指代的是當(dāng)前的元素(當(dāng)前dom對象)

例如:

<input type="text" name="username" id="username" onblur="loseFocus(this.value)">

方法:

function loseFocus(obj){

alert(obj);

}

/////////////////////////////

事件總結(jié):

常見的事件:

焦點事件:★

onfocus

onblur

表單事件:★

onsubmit

onchange 改變

頁面加載事件:★

onload

鼠標(biāo)事件(掌握)

onclick

鼠標(biāo)事件(了解)

ondblclick:雙擊

onmousedown:按下

onmouserup:彈起

onmousemove:移動

onmouserover:懸停

onmouserout:移出

鍵盤事件(理解)

onkeydown:按下

onkeyup:彈起

onkeypress:按住

////////////

綁定事件:

方式1:

元素的事件屬性

方式2:

派發(fā)事件

///////////////////

了解

阻止默認事件的發(fā)生

阻止事件傳播

/////////////////

案例3-隔行換色

需求:

一個表格,隔一行換一個色

技術(shù)分析:

事件:onload

獲取元素:dom操作

///////////////

獲取元素:

document.getElementById("id"):通過id獲取一個元素

document.getElementsByTagName("標(biāo)簽名"):通過標(biāo)簽名獲取一種元素(多個)返回一個數(shù)組

Array:

常用屬性:

length:數(shù)組的長度

////////////////////////

步驟分析:

1.html表格一加載的時候 確定事件 onload

2.編寫函數(shù)

a.獲取元素(所有的tr元素)

b.操作(若當(dāng)前行是偶數(shù)的話加一個樣式,若是奇數(shù)的話,加另一個樣式)

////////

//頁面加載成功

onload=function(){

//1.獲取所有的tr

var arr=document.getElementsByTagName("tr");

//alert(arr);

//alert(arr.length);

//2.判斷奇偶數(shù) 添加不同的樣式 遍歷數(shù)組

for(var i=1;i<arr.length;i++){

if(i%2==0){

arr[i].style.backgroundColor="#FFFFCC";

}else{

arr[i].style.backgroundColor="#BCD68D";

}

}

}

//////////////////////////

案例4:全選或者全不選

步驟分析:

1.確定事件 最上面那個復(fù)選框的單擊事件 onclick

2.編寫函數(shù):讓所有的復(fù)選框和最上面的復(fù)選框狀態(tài)保持一致

a.獲取最上面這個復(fù)選框選中狀態(tài) 通過checkbox的checked屬性即可

b.獲取其他的復(fù)選框,設(shè)置他們的checked屬性即可

可以通過以下兩種方案獲取元素

document.getElementsByClassName():需要給下面所有的復(fù)選框添加class屬性

document.getElementsByName():需要給下面所有的復(fù)選框添加name屬性

//////////////////////////////////

dom(文檔對象模型)

當(dāng)瀏覽器接受到html代碼的時候,瀏覽器會將所有的代碼裝載到內(nèi)存中,形成一棵樹(document樹)

節(jié)點(Node)

文檔節(jié)點 document

元素節(jié)點 element

屬性節(jié)點 attribute

文本節(jié)點 text

獲取節(jié)點:

通過document可以獲取其他節(jié)點:

常用方法:

document.getElementById("id值"):獲取一個特定的元素

document.getElementsByTagName("標(biāo)簽名"):通過標(biāo)簽名獲取一種元素(多個)

document.getElementsByClassName("class屬性的值"):通過class屬性獲取一類元素(多個)

document.getElementsByName("name屬性的值"):通過name屬性獲取一類元素(多個)

設(shè)置獲取獲取節(jié)點的value屬性

dom對象.value;獲取

dom對象.value="";設(shè)置

設(shè)置或者獲取節(jié)點的標(biāo)簽體

dom對象.innerHTML;獲取

dom對象.innerHTML="";設(shè)置

獲取或者設(shè)置style屬性

dom對象.style.屬性;獲取

dom對象.style.屬性="";設(shè)置

獲取或者設(shè)置屬性

dom對象.屬性

/////////////////////////

對于htmldom的操作若在js或者htmldom 查找不到 去查找xml dom

關(guān)于文檔的操作 在 xml dom 的document中

關(guān)于元素的操作 在 xml dom 的element中

appendChild(dom對象):在一個元素下添加孩子

//////////////////////////////////////

案例5-左右選中.

需求:

技術(shù)分析:

1.確定事件,按鈕的單擊事件

2.編寫函數(shù):

點擊移動單|多個的:

a.獲取左邊選中的選項? select對象.options--數(shù)組

遍歷數(shù)組 判斷是否選中 option對象.selected

b.將其追加到右邊的下拉選中

rightSelect對象.appendChild(option);

點擊移動所有的

a.獲取左邊的所有的選項

b.一個個的追加過去

///////////////////////

案例6-省市聯(lián)動

需求:

選中省的時候,動態(tài)的查詢當(dāng)前省下的所有市,然后展示在市的下拉選中

技術(shù)分析:

數(shù)組:

////////////////////////

數(shù)組:

語法:

new Array();//長度為0

new Array(size);//指定長度的

new Array(e1,e2..);//指定元素

非官方

var arr4=["aa","bb"];

常用屬性:

length

注意:

數(shù)組是可變的

數(shù)組可以存放任意值

常用方法:(了解)

存放值:對內(nèi)容的操作

pop():彈 最后一個

push():插入 到最后

shift():刪除第一個

unshift():插入到首位

打印數(shù)組:

join(分隔符):將數(shù)組里的元素按照指定的分隔符打印

拼接數(shù)組:

concat():連接兩個或更多的數(shù)組,并返回結(jié)果。

對結(jié)構(gòu)的操作:

sort();排序

reverse();反轉(zhuǎn)

////////////////////////

步驟分析:

1.省的下拉選 的選項中添加value屬性 當(dāng)成數(shù)組的索引

2.初始化市

3.選擇省的時候,onchange事件

4.編寫函數(shù),

通過獲取的索引獲取對象的市的數(shù)組 this.value

遍歷數(shù)組,將數(shù)組里面的每個值組裝option 添加到select中即可

//////////////////////////////

引用類型總結(jié):

原始類型中的String Number Boolean都是偽對象,可以調(diào)用相應(yīng)的方法

Array:數(shù)組

String:

語法:

new String(值|變量);//返回一個對象

String(值|變量);//返回原始類型

常用方法:

substring(start,end):[start,end)

substr(start,size):從索引為指定的值開始向后截取幾個

charAt(index):返回在指定位置的字符。

indexOf(""):返回字符串所在索引

replace():替換

split():切割

常用屬性:length

Boolean:

語法:

new Boolean(值|變量);

Boolean(值|變量);

非0數(shù)字 非空字符串 非空對象 轉(zhuǎn)成true

Number

語法:

new Number(值|變量);

Number(值|變量);

注意:

null====>0

fale====>0 true====>1

字符串的數(shù)字=====>對應(yīng)的數(shù)字

其他的NaN

Date:

new Date();

常用方法:

toLocalString()

RegExp:正則表達式

語法:

直接量語法? /正則表達式/參數(shù)

直接量語法? /正則表達式/

new RegExp("正則表達式")

new RegExp("正則表達式","參數(shù)")

參數(shù):

i:忽略大小寫

g:全局

常用方法:

test() :返回值為boolean

Math:

Math.常量|方法

Math.PI

Math.random()? [0,1)

全局:

decodeURI() 解碼某個編碼的 URI。

encodeURI() 把字符串編碼為 URI。

Number():強制轉(zhuǎn)換成數(shù)字

String():轉(zhuǎn)成字符串

parseInt():嘗試轉(zhuǎn)換成整數(shù)

parseFloat():嘗試轉(zhuǎn)換成小數(shù)

eval() 計算 JavaScript 字符串,并把它作為腳本代碼來執(zhí)行。

//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////

上午回顧:

BOM(瀏覽器對象模型)

window對象:窗口

注意:

若是window對象的屬性和方法,調(diào)用的時候可以省略window

常用屬性:

通過window可以獲取其他的四個對象

window.location 等價于 location

常用方法:

消息框

alert() 警告框

confirm() 確認框 返回值:boolean

prompt() 輸入框 返回值:輸入的內(nèi)容

定時器

設(shè)置

setInterval(code,毫秒數(shù)):循環(huán)

setTimeout(code,毫秒數(shù)):延遲 只執(zhí)行一次

清除

clearInterval(id):

clearTimeout(id):

打開和關(guān)閉

open(url)

close()

location對象:定位信息 地址欄

常用屬性:

href:獲取或者設(shè)置當(dāng)前頁面的url

location.href:獲取

location.href="url":設(shè)置 相當(dāng)于超鏈接

history對象:操作歷史

常用方法:

go()

////////////////////////////

事件:

焦點:★

onfocus:獲取焦點

onblur:失去焦點

表單事件:★

onsubmit: form表單里的

onchange:改變(下拉選)

頁面或者對象加載:★

onload:

鼠標(biāo):★

onclick:單擊

鍵盤:

onkeyup:

dom(★)

獲取元素的方法(4個) document

操作元素的屬性? dom對象.屬性;

引用類型:

array

string

substring

全局:

編碼2個

強制轉(zhuǎn)化 Number String

嘗試? parseXxx

eval() 解析字符串形式的js代碼

Math random()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容