琥珀无限级分类联动菜单AJAX版 我做好琥珀无限级分类联动菜单Javascript版后,在蓝色理想和CSDN上发表了一下,梅花雪兄在CSDN上提出了效率不足的问题,我也认识到了这一点,本打算项目完工后再进行完善,但一时技痒,便在网上寻找了一下资料,最后做出了此AJAX版无限级分类联动菜单。因时间匆忙,做得比较粗糙,但已利用AJAX技术,实现无限级联动,待过一段时间再完善此版本。希望能给大家提供一些帮助,有好的建议或bug可在此帖后回复或浏览http://www.51ajax.com/bbs/发帖。运行环境:MS IE 6.0 FireFox 1.0.1下载地址:请点击这里在线Demo:请点击这里Bug 反馈:请点击这里最后更新:2005-10-20 16:18共有两个文件:文件ajax.html代码如下: 琥珀网 - 无限级联动菜单[AJAX版] body, td { font-family: 宋体; font-size: 12px; } function GetResult(str,classid) { /* *--------------- GetResult(str,classid) ----------------- * GetResult(str) * 功能:通过XMLHTTP发送请求,返回结果. * 参数:str,字符串,发送条件;classid,数字,菜单级别 * 实例:GetResult(document.all.userid.value,1); *--------------- GetResult(str,classid) ----------------- */ //定义菜单级数,菜单ID数组,菜单对应字段数组 var MenuIdArr,MenuFieldArr,MenuClass MenuIdArr= new Array() MenuFieldArr=new Array() MenuClass=4 MenuIdArr[1]="sel1" MenuIdArr[2]="sel2" MenuIdArr[3]="sel3" MenuIdArr[4]="sel4" MenuFieldArr[1]="name" MenuFieldArr[2]="name" MenuFieldArr[3]="name" MenuFieldArr[4]="name" if (window.XMLHttpRequest) { // Mozilla, Safari, ... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE http_request = new ActiveXObject("Microsoft.XMLHTTP"); } var linkurl="http://www.10090.com/demo/hpmenu/ajax_server.asp?classid="+classid+"&sel="+str+"&fieldname="+MenuFieldArr[classid+1] http_request.open("GET",linkurl,false); http_request.send(null); //服务器端处理返回的是经过escape编码的字符串. //在页面显示服务器查询结果 var returntxt=unescape(http_request.responseText) if(returntxt.length>0) {document.all,ajax.innerHTML="服务器返回结果:"+returntxt+" [Powered by AJAX]"} else {document.all,ajax.innerHTML=""} //通过XMLHTTP返回数据,开始构建Select. BuildSel(returntxt,eval("document.all."+MenuIdArr[classid+1])) //============更改下下级以下菜单为空============== var kkk for(kkk=classid+2;kkk<=MenuClass;kkk++) { submenu=eval("document.all."+MenuIdArr[kkk]) submenu.length=1 submenu.options[0].selected=true } } function BuildSel(str,sel) { /* *--------------- BuildSel(str,sel) ----------------- * BuildSel(str,sel) * 功能:通过str构建Select. * 参数:str,字符串,由服务端返回的.有特定结构"字符串1|,字符串2,字符串3" * 也可为"字符串1序号|字符串1文本,字符串2序号|字符串2文本,字符串3序号|字符串3文本",如本例 * 参数:sel,要构建的Select * 实例:BuildSel(unescape(oBao.responseText),document.all.sel2) *--------------- BuildSel(str,sel) ----------------- */ //先清空原来的数据. sel.options.length=0; var arrstr = new Array(); arrstr = str.split(","); //开始构建新的Select. sel.options.add(new Option( "-----请选择-----","")); if(str.length>0) { for(var i=0;i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('/upload/2006111610308411.jpg');}" alt="" src="http://files.zwyuanma.com/upload/2006111610308411.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>以上两个版本的程序,也是揉合了众多网友的智慧,经我之手呈现出来,互联网的初衷与精髓就在于分享,愿这个小程序能给您带来些许方便。