本文实例讲述了js模拟淘宝网的多级选择菜单实现方法。分享给大家供大家参考。具体如下:
这是一款基于js模拟淘宝网的多级选择菜单代码,这款菜单是模拟淘宝网的,是很早时候的淘宝网,现在已经没有了,本款菜单可以像级联菜单那样一级一级的选择数据,最后确定出数据。
运行效果截图如下:
在线演示地址如下:
http://demo.phpstudy.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.phpstudy.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程序设计有所帮助。
本文地址:https://www.stayed.cn/item/23396
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我