代码驿站移动版
频道导航
HTML/Xhtml
CSS
JavaScript
HTML5
PHP教程
ASP.NET
正则表达式
AJAX
ThinkPHP
Yii
MySQL
MariaDB
Oracle
MongoDB
Redis
DedeCMS
PHPCMS
帝国CMS
WordPress
Discuz
其它CMS
Zend Studio
Sublime
Notepad
Dreamweaver
Windows
Linux
Nginx
Apache
IIS
CentOS
Ubuntu
Debian
网站优化
工具资源
PHP源码
ASP.NET源码
其它源码
图标素材
按钮素材
字体素材
DedeCMS模板
帝国CMS模板
PHPCMS模板
WordPress模板
Discuz!模板
单页模板
开发软件下载
服务器软件下载
广告投放
联系我们
版权申明
软件编程
网页前端
移动开发
数据库
服务器
脚本语言
PHP代码
JAVA代码
Python代码
Android代码
当前位置:
主页
>
网页前端
>
JavaScript代码
>
琥珀无限级分类联动菜单AJAX版
时间:2021-04-07 10:11:46 | 栏目:
JavaScript代码
| 点击:次
我做好琥珀无限级分类联动菜单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代码如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta content="琥珀[hopesoft],[url]http://www.10090.com[/url]" name="author"> <title>琥珀网 - 无限级联动菜单[AJAX版]</title> <style type="text/css"> body, td { font-family: 宋体; font-size: 12px; } </style> <script language="JavaScript"> 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="服务器返回结果:<font color='red'>"+returntxt+"</font> [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<arrstr.length;i++) { //分割字符串 var subarrstr=new Array subarrstr=arrstr[i].split("|") //生成下级菜单 sel.options.add(new Option(subarrstr[1],subarrstr[0])); } sel.options[0].selected=true } } </script> <form name="form1" method="post" action=""> <table width="90%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#CCCCCC"> <tr bgcolor="F1F1F1"> <td height="24" colspan="2" align="center">琥珀无限级联动菜单-AJAX版 [HPMenu_AJAX V1.0]</td> </tr> <tr bgcolor="#FFFFFF"> <td width="12%" height="24" align="center">所 在 洲:</td> <td><select name="sel1" id="sel1" onChange="GetResult(this.value,1)"> <option value="" selected>-----请选择-----</option> <option value="10">亚洲</option> <option value="11">欧洲</option> </select></td> </tr> <tr bgcolor="#FFFFFF"> <td height="24" align="center">国 家:</td> <td><select name="sel2" onChange="GetResult(this.value,2)"> <option value="" selected>-----请选择-----</option> </select></td> </tr> <tr bgcolor="#FFFFFF"> <td height="24" align="center">城 市:</td> <td><select name="sel3" id="sel3" onChange="GetResult(this.value,3)"> <option value="" selected>-----请选择-----</option> </select></td> </tr> <tr bgcolor="#FFFFFF"> <td height="24" align="center">地 区:</td> <td><select name="sel4" id="sel4"> <option value="" selected>-----请选择-----</option> </select></td> </tr> <tr bgcolor="F1F1F1"> <td height="24" colspan="2" align="center" id="ajax"> </td> </tr> </table> <table width="90%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td height="25" align="left">下载地址:<a href="http://www.10090.com/demo/hpmenu/HPMenu_ajax.rar" target="_blank">请点击这里</a></td> </tr> <tr> <td height="25" align="left">在线Demo:<a href="http://www.10090.com/demo/" target="_blank">请点击这里</a></td> </tr> <tr> <td height="25" align="left">Bug 反馈:<a href="http://www.10090.com/bbs/index.asp?boardid=60" target="_blank">请点击这里</a></td> </tr> <tr> <td height="25" align="left">最后更新:2005-10-20 16:18</td> </tr> <tr> <td height="25" align="left">联系方式:MSN:hopesoft@msn.com</td> </tr> <tr> <td height="50" align="center">copyright(c) 2005 <a href="http://www.10090.com">Hopesoft Studio</a> </td> </tr> </table> <script language="javascript"> GetResult(document.getElementById("sel1").value,1) </script> </form> </body> </html>
[Ctrl+A 全选 注:
引入外部Js需再刷新一下页面才能执行
]
文件ajax_server.asp代码如下:
<% @Language="JavaScript" %> <% function OpenDB(sdbname) { /* *--------------- OpenDB(sdbname) ----------------- * OpenDB(sdbname) * 功能:打开数据库sdbname,返回conn对象. * 参数:sdbname,字符串,数据库名称. * 实例:var conn = OpenDB("database.mdb"); *--------------- OpenDB(sdbname) ----------------- */ var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname); var conn = Server.CreateObject("ADODB.Connection"); conn.Open(connstr); return conn; } var oConn = OpenDB("ajax_data.mdb"); var sel = Request("sel"); var classid = Request("classid") var fieldname = Request("fieldname") var arrResult = new Array(); //var sql = "select "+fieldname+" from Demo where parentid='"+sel+"' and classid="+classid; var sql = "select id,"+fieldname+" from Demo where parentid='"+sel+"'"; //Response.Write("alert("+sql+")") var rs = Server.CreateObject("ADODB.Recordset"); rs.Open(sql,oConn,1,1); while(!rs.EOF) { //遍历所有适合的数据放入arrResult数组中. arrResult[arrResult.length] = rs(0).Value+"|"+rs(1).Value; rs.MoveNext(); } //escape解决了XMLHTTP。中文处理的问题. //数组组合成字符串.由","字符串连接. Response.Write(escape(arrResult.join(","))); %>
[Ctrl+A 全选 注:
引入外部Js需再刷新一下页面才能执行
]
以上两个版本的程序,也是揉合了众多网友的智慧,经我之手呈现出来,互联网的初衷与精髓就在于分享,愿这个小程序能给您带来些许方便。
您可能感兴趣的文章:
JavaScript常见事件处理程序实例总结
Javascript的匿名函数小结
url传递的参数值中包含&时,url自动截断问题的解决方法
javascript上下左右定时滚动插件
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
相关文章
11-08
兼容浏览器的js事件绑定函数(详解)
11-23
Webpack中loader打包各种文件的方法实例
11-27
Javascript实例教程(19) 使用HoTMetal(2)
10-05
javascript判断图片是否加载完成的方法推荐
11-22
在javascript中执行任意html代码的方法示例解读
JQuery
VUE
AngularJS
MSSql
MySQL
MongoDB
Redis
Linux
Tomcat
Nginx
网站首页
广告投放
联系我们
版权申明
联系站长