本文实例讲述了js模拟淘宝网的多级选择菜单实现方法。分享给大家供大家参考。具体如下:
这是一款基于js模拟淘宝网的多级选择菜单代码,这款菜单是模拟淘宝网的,是很早时候的淘宝网,现在已经没有了,本款菜单可以像级联菜单那样一级一级的选择数据,最后确定出数据。
运行效果截图如下:
在线演示地址如下:
http://demo.jb51.net/js/2015/js-ftaobao-select-menu-codes/
具体代码如下:
<!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> <title>模拟淘宝网菜单选择</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <style type="text/css" media="all"> body *{ font-size:14px; margin:0; padding:0; } #CategorySelector{ clear:both; width:778px; height:220px; background-color:#FFF; margin-bottom:8px; } #CategorySelector ul{ margin:0 3px 0 0; padding:0; border:1px solid #CCC; float:left; width:189px; height:218px; overflow:auto; } #CategorySelector ul.Blank{ background-color:#F6F6F6; } #CategorySelector li{ list-style-type:none; width:auto; height:20px; margin:0 1px !important; margin /**/:0 1px 0 -15px; padding:0; border:1px solid #FFF; line-height:20px; color:#444; text-indent:3px; cursor:default; } #CategorySelector li.Selected{ background-color:#CAFFC0; border:1px solid #0A9800; color:#006623; } #CategorySelector li.IsParent{ background-image:url(http://files.jb51.net/file_images/article/201508/201581893903737.gif); background-position:99% 50%; background-repeat:no-repeat; } #CategorySelector li.RecentUsed{ color:#170; } #CategoryTitle{ clear:both; width:778px; background-color:#FFF; } #CategoryTitle ul{ float:left; } #CategoryTitle li{ margin:0 3px 0 0; float:left; border:1px solid #CCC; width:189px; color:#0063C8; font-weight:bold; border-bottom:0px; height:23px; line-height:23px; } </style> </head> <body> <div id="CategoryTitle"> <ul id="TitleContent"> <li> 选择宝贝类别</li> <li> 选择游戏</li> <li> 选择游戏区域</li> <li> 选择服务器</li> </ul> </div> <div id="CategorySelector"> <ul id="Category_ItemType" class="Blank"> </ul> <ul id="Category_GameType" class="Blank"> </ul> <ul id="Category_GameArea" class="Blank"> </ul> <ul id="Category_GameServer" class="Blank"> </ul> </div> <script language="javascript" type="text/javascript" id="commonjs"> Array.prototype.S = String.fromCharCode(2); Array.prototype.in_array = function(e) { var re = new RegExp(this.S+e+this.S); return re.test(this.S+this.join(this.S)+this.S); } function DataContent() { this.Parent; // Parent Tags this.ParentID; this.Children; // Children Tags this.ChildrenID; } function DataServer() { this.mList = new Array(); this.ListCount = function(){return this.mList.length;} this.GetListObj = function(n) { if (n<this.ListCount()) return this.mList[n]; return null; } this.Add = function(sParent,sParentID,sChildren,sChildrenID) { obj = new DataContent(); obj.Parent = sParent; obj.ParentID = sParentID; obj.Children = sChildren; obj.ChildrenID = sChildrenID; this.mList[this.ListCount()] = obj; } } function getTriggerNode(e) { return (document.all)?event.srcElement:e.target; } function getObject(objID) { return document.getElementById(objID); } function CreateList(objName,objData,objSelected) { var listBox = getObject(objName[0]); if(!listBox) return; var strOutput = ""; var liClass = ""; var id = 0; var op_txt = new Array(); var op_val = new Array(); var sub_val = new Array(); if (objSelected[0]) { for(i=0;i<objData.ListCount();i++) if(objData.GetListObj(i).ParentID==objSelected[0]) { id = i; break; } if(i==objData.ListCount()){ listBox.innerHTML=""; listBox.className="Blank"; return false; } } if(objName[1]) for(i=0;i<objName[1].ListCount();sub_val.push(objName[1].GetListObj(i++).ParentID)); tmpobj = objData.GetListObj(id); if (tmpobj.Children.length==0) { for(i=0;i<objData.ListCount();op_txt.push(objData.GetListObj(i).Parent),op_val.push(objData.GetListObj(i++).ParentID)); } else { op_txt = tmpobj.Children; op_val = tmpobj.ChildrenID; } for(i=0;i<op_txt.length;i++) { if(sub_val.in_array(op_val[i])) liClass = "IsParent"; if(op_val[i] == objSelected[1]){ liClass += " Selected"; } strOutput += '<li id="'+objName[0]+'__'+op_val[i]+'" class="'+liClass+'">'+op_txt[i]+'</li>'; liClass = ''; } listBox.innerHTML = strOutput; strOutput = ""; listBox.className=""; } function changeCategoryStyle(ulID,liCurr){ if(lastSelectItem[ulID]){ lastSelectItem[ulID].className=lastSelectItem[ulID].className.replace("Selected","").replace(/\s+$/,""); } liCurr.className += " Selected"; lastSelectItem[ulID] = liCurr; } function changeCategory(evnt) { var obj = getTriggerNode(evnt); var obj2 = obj; if(obj2.nodeName=="DIV") return (0); if(obj.nodeName != "LI") obj = obj.parentNode; while(obj2.nodeName != "UL") obj2 = obj2.parentNode; if(obj.nodeName != "LI") return; changeCategoryStyle(obj2.id,obj); var parentID = (obj.id).split("__")[1]; switch(obj2.id) { case itemtype: break; case gametype: CreateList([gamearea,gameserverData],gameareaData,[parentID,0]); break; case gamearea: CreateList([gameserver,],gameserverData,[parentID,0]); break; } } var cselect = "CategorySelector"; var itemtype = "Category_ItemType"; var gametype = "Category_GameType"; var gamearea = "Category_GameArea"; var gameserver = "Category_GameServer"; var lastSelectItem = {itemtype:new Object(),gametype:new Object(),gamearea:new Object(),gameserver:new Object()}; var itemtypeData = new DataServer(); itemtypeData.Add("武器",1,[],[]); itemtypeData.Add("防具",2,[],[]); var gametypeData = new DataServer(); gametypeData.Add("魔力宝贝",1,[],[]); gametypeData.Add("仙境传说",2,[],[]); var gameareaData = new DataServer(); gameareaData.Add("魔力宝贝",1,["天歇","牧羊"],[1,2]); gameareaData.Add("仙境传说",2,["上海","北京"],[3,4]); var gameserverData = new DataServer(); gameserverData.Add("天歇",1,["平顶","山顶"],[1,2]); gameserverData.Add("牧羊",2,["平顶2","山顶2"],[3,4]); //gameserverData.Add("上海",3,["sfdsadfas","sdf"],[5,6]); gameserverData.Add("北京",4,["asdf","asdff"],[7,8]); CreateList([itemtype,],itemtypeData,[0,0]); CreateList([gametype,gameareaData],gametypeData,[0,0]); getObject(cselect).onclick = changeCategory; </script> </body> </html>
希望本文所述对大家的javascript程序设计有所帮助。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript在现实世界中的应用包括服务器端编程、移动应用开发和物联网控制:1.通过Node.js实现服务器端编程,适用于高并发请求处理。2.通过ReactNative进行移动应用开发,支持跨平台部署。3.通过Johnny-Five库用于物联网设备控制,适用于硬件交互。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用