一个js模拟下拉框效果

<!DOCTYPE">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script src="javascrpt/elect2.js" type="text/javascript"></script>

<style>

* { padding:0px; margin:0px; }

#tele_name0,

#tele_name1 { border:1px solid #ccc; -webkit-border-radius:5px; -moz-border-radius:5px; box-shadow:2px 2px 5px #ccc; height:24px; line-height:24px; width:150px; margin:30px auto; padding:3px 8px; float:left; }

#tele_name0 h1,

#tele_name1 h1 { font-weight:normal; font-size:14px; line-height:24px; height:24px; padding:0px; margin:0px; }

#tele_name0 ul,

#tele_name1 ul { border:1px solid #ccc; margin-top:8px; border-bottom:none; }

#tele_name0 ul li,

#tele_name1 ul li { list-style:none; cursor:pointer; line-height:24px; border-bottom:1px solid #ccc; padding:0px 5px; }

.bg_color { background:#66CCCC; }

</style>

</head>

<body>

<div id="tele_name0" onMouseOver="elec('tele_name0')" >

  <h1>请选择品牌</h1>

  <ul class="xiala" style="display:none; background:#ccc;">

    <li id="heimei" class="logo_a0">sumsun</li>

    <li id="xiaxin"class="logo_a1">HTC</li>

    <li id="pingguo"class="logo_a2">NOKIA</li>

  </ul>

</div>



<div id="tele_name1" onMouseOver="elec('tele_name1');">

  <h1>请选择型号</h1>

  

</div>

</body>

</html>

 下面是外部的js代码:

var arrText2=[];//定义数组;

var this_classname;

function elec(namei){

	if(!document.getElementById("tele_name1")) return false;

	if(!document.getElementById("tele_name0")) return false;

	var div_box=document.getElementById(namei);//获取id

	var this_id=document.getElementById("tele_name1");

	var div2_h1=this_id.getElementsByTagName("h1")[0];

	var box_h1=div_box.getElementsByTagName("h1");

	var box_ul=div_box.getElementsByTagName("ul");

	var box_li=div_box.getElementsByTagName("li");

	var html_ele=document.getElementsByTagName("html")[0];//获取html;

	html_ele.onclick=function(){

		box_ul[0].style.display="none";

		}	//单击任何地方,下拉框隐藏;

	box_h1[0].onclick=function(event){

		if(!this_id.getElementsByTagName("ul"))return false;

		if(!event){event=window.event;}

			event.cancelBubble=true;//阻止冒泡事件,费了半天劲呢!

			box_ul[0].style.display=(box_ul[0].style.display=="none") ? "block":"none";//单击h1如果下拉框显示则隐藏,如果隐藏则显示;

		}

	for(var i=0; i<box_li.length;i++){

		box_li[i].onmouseover=function(){

			this.className="bg_color";

		}

		box_li[i].onmouseout=function(){

			this.className=" ";

		}//鼠标移到li上变色;

		box_li[i].onclick=function(){

			box_h1[0].lastChild.nodeValue=this.lastChild.nodeValue;//单击li; h1获取当前li的文本内容;

			div2_h1.lastChild.nodeValue="请选择型号";//第二个下拉框h1变成默认的请选择型号;

			if(namei=="tele_name1"){

				div2_h1.lastChild.nodeValue=this.lastChild.nodeValue;//如果是在第二下拉框里进行单击则获取当前的文本内容;

			}

			var getId=this.getAttribute("id");//获取当前被点击的li的id;

			if(getId=="heimei"){

			var arrText=["A3500","btwee","C234","dsese"];

			var ul_classname="heimei"

			arrText2=arrText.valueOf();

			this_classname=ul_classname;

				newadd();

			}//如果当前li的ID=heimei则显示黑莓的型号;

			else if(getId=="xiaxin"){

				var arrText=["B123","B456","B789","B902"];

				var ul_classname="xiaxin"

				arrText2=arrText.valueOf();

				this_classname=ul_classname;

				newadd();

			}//如果当前li的ID=xiaxin则显示xiaxin的型号;

			else if(getId=="pingguo"){

				var arrText=["IPAD","apple001","apple02","apple004","apple05"];

				var ul_classname="pingguo"

				arrText2=arrText.valueOf();

				this_classname=ul_classname;

				newadd();

			}//如果当前li的ID=pingguo则显示pingguo的型号;

			

			box_ul[0].style.display="none";

		}

	}

}



function newadd(){

	var div_box=document.getElementById("tele_name0");//查找第一个div

	var this_id=document.getElementById("tele_name1");//查找第二个div

	var box_li=div_box.getElementsByTagName("li");//查找第一个div里的li;

	var newul=document.createElement("ul");//创建ul;

	newul.setAttribute("style","display:none");

	newul.setAttribute("class","this_classname");//为ul设置属性;

	var oFramnet=document.createDocumentFragment();//创建片段,确保加载更快;

			var div_ul=this_id.getElementsByTagName("ul");

			 for(var i=0;i<div_ul.length;i++){

				 if(div_ul[i].getAttribute("class")!=this_classname){

					 this_id.removeChild(div_ul[i]);

				 }

			 }//判断当前的ul是不是需要的,如果不是删除ul节点;

			for(var i=0;i<arrText2.length;i++){

				var newli=document.createElement("li");

				var newtext=document.createTextNode(arrText2[i]);

				newli.appendChild(newtext);

				newul.appendChild(newli);

				oFramnet.appendChild(newul);

			}

			this_id.appendChild(oFramnet);//创建

			//alert("tt");

	

}

  ,请多指教,因为下拉框的三角下拉箭头不能用css定义所以就自己写了一个,点击前面的选项后面的下拉框里的内容要跟这改变。

 

你可能感兴趣的:(下拉框)