作者:poorczz 时间: 2004-01-10 文档类型:原创 来自:蓝色理想
运行代码框:<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标签 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;//定义一个顺序栈,栈底放入#,k为栈顶指针 for (var j=0;j<arrElement.length;j++){ if (IsGood(stack[k],arrElement[j])) {k--;stack.length--;}//如果配对,栈顶元素出栈 else {stack[++k]=arrElement[j];}//如果不配对,新标签入栈 alert(stack[k]);//演示栈顶的内容 } (stack[k]=="#")?(document.write("所有的标签匹配")):(document.write("有的标签不匹配")); } //--> </SCRIPT> <TEXTAREA NAME="oT" ROWS="10" COLS="90"> <HTML> <META> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <img><input> </BODY> </HTML> </TEXTAREA> <BR><BR> 原理:建一个栈,每次碰到一个新标签,就与栈顶的标签配对,如果配对,栈顶的标签就出栈,如果不配对,这个新标签就进栈,最终,栈如果是空的,说明所有的标签都是配对的,如果栈不空,说明有不配对的地方<BR> 框中是模拟的html代码,你可以修改后,点下面的按钮,看是不是匹配。<BR> 弹出的对话框是演示栈顶的内容<BR> 特点:<BR>1、还不能判断<...>哪些是合法的html标签,可以在代码中直接输入合法标签,工作量太大。<BR>2、有的标签是不需配对的,如<img>,代码智能判断为匹配的。<BR>3、目前还不支持标签后加属性 <BR><BR> <INPUT TYPE="button" value="Start" onclick="chk()"> </BODY> </HTML> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
相关连接:http://www.blueidea.com/bbs/newsdetail.asp?id=1326572
出处:蓝色理想 责任编辑:红色黑客
◎进入论坛网页制作、网站综合版块参加讨论
蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。