作者:poorczz 時(shí)間: 2004-01-10 文檔類型:原創(chuàng) 來自:藍(lán)色理想
運(yùn)行代碼框:<HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> <!-- //去掉字串中的空格 function NoSpace(txt){ return (txt.replace(/[\s]+/g,'')) } //判斷<aaa>與</aaa>是配對的html標(biāo)簽 function IsGood(txt1,txt2){ var txt='<'+'/'+txt1.substr(1); return (txt==txt2)?1:0; } function chk(){ //s為模擬的html代碼 //var s="d<html>fg<table>sdfg<img><tr>asdfg<td>6456</td>dfg</tr>dsfg</table>d</html>fg"; var s=NoSpace(oT.value).toLowerCase(); var arrMinus=new Array('<img>','<input>','<meta>','<hr>'); for (var i=0;i<arrMinus.length;i++){ s=s.replace(arrMinus[i],''); } var arrElement=s.match(/<[/|A-Za-z]+>/ig);//取出所有的<....>格式的字串 var stack=new Array(); stack[0]='#';k=0;//定義一個(gè)順序棧,棧底放入#,k為棧頂指針 for (var j=0;j<arrElement.length;j++){ if (IsGood(stack[k],arrElement[j])) {k--;stack.length--;}//如果配對,棧頂元素出棧 else {stack[++k]=arrElement[j];}//如果不配對,新標(biāo)簽入棧 alert(stack[k]);//演示棧頂?shù)膬?nèi)容 } (stack[k]=="#")?(document.write("所有的標(biāo)簽匹配")):(document.write("有的標(biāo)簽不匹配")); } //--> </SCRIPT> <TEXTAREA NAME="oT" ROWS="10" COLS="90"> <HTML> <META> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <img><input> </BODY> </HTML> </TEXTAREA> <BR><BR> 原理:建一個(gè)棧,每次碰到一個(gè)新標(biāo)簽,就與棧頂?shù)臉?biāo)簽配對,如果配對,棧頂?shù)臉?biāo)簽就出棧,如果不配對,這個(gè)新標(biāo)簽就進(jìn)棧,最終,棧如果是空的,說明所有的標(biāo)簽都是配對的,如果棧不空,說明有不配對的地方<BR> 框中是模擬的html代碼,你可以修改后,點(diǎn)下面的按鈕,看是不是匹配。<BR> 彈出的對話框是演示棧頂?shù)膬?nèi)容<BR> 特點(diǎn):<BR>1、還不能判斷<...>哪些是合法的html標(biāo)簽,可以在代碼中直接輸入合法標(biāo)簽,工作量太大。<BR>2、有的標(biāo)簽是不需配對的,如<img>,代碼智能判斷為匹配的。<BR>3、目前還不支持標(biāo)簽后加屬性 <BR><BR> <INPUT TYPE="button" value="Start" onclick="chk()"> </BODY> </HTML> [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
相關(guān)連接:http://m.95time.cn/bbs/newsdetail.asp?id=1326572
出處:藍(lán)色理想 責(zé)任編輯:紅色黑客
◎進(jìn)入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論
藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。
轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。
特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。