当前位置: 代码迷 >> JavaScript >> javascript美化上拉框js
  详细解决方案

javascript美化上拉框js

热度:5921   发布时间:2013-02-26 00:00:00.0
javascript美化下拉框js
var childCreate = false;function Offset(e) {	//取标签的绝对位置	var t = e.offsetTop;	var l = e.offsetLeft;	var w = e.offsetWidth;	var h = e.offsetHeight - 2;	while ( e = e.offsetParent) {		t += e.offsetTop;		l += e.offsetLeft;	}	return {		top : t,		left : l,		width : w,		height : h	}}function loadselect(obj) {	//第一步:取得select所在的位置	var offset = Offset(obj);	//第二步:将真的select隐藏	obj.style.display = "none";	//第三步:虚拟一个div出来代替select	var iDiv = document.createElement("div");	iDiv.id = "selectof" + obj.name;	iDiv.style.position = "absolute";	iDiv.style.width = offset.width + "px";	iDiv.style.height = offset.height + "px";	iDiv.style.top = offset.top + 4 + "px";	iDiv.style.left = offset.left + 4 + "px";	iDiv.style.background = "url('test.png') no-repeat right -6px";	iDiv.style.border = "1px solid #ccc";	iDiv.style.fontSize = "12px";	iDiv.style.lineHeight = offset.height + "px";	iDiv.style.textIndent = "4px";	document.body.appendChild(iDiv);	//第四步:将select中默认的选项显示出来	var tValue = obj.options[obj.selectedIndex].innerHTML;	iDiv.innerHTML = tValue;	//第五步:模拟鼠标点击	iDiv.style.background = "url('images/select.jpg') no-repeat right -2px";	iDiv.onclick = function() {//鼠标点击		if (document.getElementById("selectchild" + obj.name)) {			//判断是否创建过div			if (childCreate) {				//判断当前的下拉是不是打开状态,如果是打开的就关闭掉。是关闭的就打开。				document.getElementById("selectchild" + obj.name).style.display = "none";				childCreate = false;			} else {				document.getElementById("selectchild" + obj.name).style.display = "";				childCreate = true;			}		} else {			//初始一个div放在上一个div下边,当options的替身。			var cDiv = document.createElement("div");			cDiv.id = "selectchild" + obj.name;			cDiv.style.position = "absolute";			cDiv.style.width = offset.width + "px";			cDiv.style.height = obj.options.length * 20 + "px";			cDiv.style.top = (offset.top + offset.height + 2) + 4+"px";			cDiv.style.left = offset.left + 4+ "px";			cDiv.style.background = "#f7f7f7";			cDiv.style.border = "1px solid silver";			var uUl = document.createElement("ul");			uUl.id = "uUlchild" + obj.name;			uUl.style.listStyle = "none";			uUl.style.margin = "0";			uUl.style.padding = "0";			uUl.style.fontSize = "12px";			cDiv.appendChild(uUl);			document.body.appendChild(cDiv);			childCreate = true;			for (var i = 0; i < obj.options.length; i++) {				//将原始的select标签中的options添加到li中				var lLi = document.createElement("li");				lLi.id = obj.options[i].value;				lLi.style.textIndent = "4px";				lLi.style.height = "20px";				lLi.style.lineHeight = "20px";				lLi.innerHTML = obj.options[i].innerHTML;				uUl.appendChild(lLi);			}			var liObj = document.getElementById("uUlchild" + obj.name).getElementsByTagName("li");			for (var j = 0; j < obj.options.length; j++) {				//为li标签添加鼠标事件				liObj[j].onmouseover = function() {					this.style.background = "gray";					this.style.color = "white";				}				liObj[j].onmouseout = function() {					this.style.background = "white";					this.style.color = "black";				}				liObj[j].onclick = function() {					//做两件事情,一是将用户选择的保存到原始select标签中,要不做的再好看表单递交后也获取不到select的值了。					obj.options.length = 0;					obj.options[0] = new Option(this.innerHTML, this.id);					//同时我们把下拉的关闭掉。					document.getElementById("selectchild" + obj.name).style.display = "none";					childCreate = false;					iDiv.innerHTML = this.innerHTML;				}			}		}	}}document.body.onload = function (){	var selects = document.getElementsByTagName("select");	for(var i = 0 ; i < selects.length;i++){		loadselect(selects[i]);	}}

?

  相关解决方案