console
window.onload=function(){
var box=document.getElementById('divselect'),
title=box.getElementsByTagName('cite')[0],
menu=box.getElementsByTagName('ul')[0],
as=box.getElementsByTagName('a'),
len = as.length;
function stopPropagation (e) {
e = e || window.event;
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
}
function addEvent(elem, type, fun) {
if (elem.addEventListener) {
elem.addEventListener(type, fun);
} else if (elem.attachEvent) {
elem.attachEvent("on" + type, fun);
} else {
elem["on" + type] = fun;
}
}
function removeEvent (elem, type, fun) {
if (elem.removeEventListener) {
elem.removeEventListener(type, fun);
} else if (elem.detachEvent) {
elem.detachEvent("on" + type, fun);
} else {
elem["on" + type] = null;
}
}
function winKeyDown (e) {
var activatedA = getActivated(),
selectid = activatedA && activatedA.getAttribute("selectid");
cleanActivated();
if (e.keyCode == 40) {
if (!selectid) {
activeA(as[0]);
} else if (selectid < 5) {
activeA(as[selectid]);
}
} else if (e.keyCode == 38) {
if (!selectid) {
activeA(as[4]);
} else if (selectid > 1) {
activeA(as[selectid - 2]);
}
} else if (e.keyCode == 13) {
if (!selectid) {
title.innerHTML = "请选择分类";
} else {
title.innerHTML = as[selectid - 1].innerHTML;
}
hideMenu();
}
}
function clickA (e) {
title.innerHTML = this.innerHTML;
hideMenu();
stopPropagation(e);
}
function clickTitle (e) {
menu.style.display = 'block';
addEvent(window, "click", clickWin);
addEvent(window, "keydown", winKeyDown);
stopPropagation(e);
}
function clickWin () {
title.innerHTML = "请选择分类";
hideMenu();
}
function hideMenu () {
cleanActivated();
menu.style.display = 'none';
removeEvent(window, "click", clickWin);
removeEvent(window, "keydown", winKeyDown);
}
function getActivated () {
for (var i = 0; i < len; i++) {
if (as[i].className == "active") {
return as[i];
}
}
return null;
}
function cleanActivated () {
var activatedA = getActivated();
if (activatedA) {
activatedA.className = null;
}
}
function mouseoverA (e) {
cleanActivated();
activeA(this);
}
function activeA (e) {
e.className = "active";
}
addEvent(title, "click", clickTitle);
for (var i = 0; i < len; i++) {
addEvent(as[i], "mouseover", mouseoverA);
addEvent(as[i], "mouseout", cleanActivated);
addEvent(as[i], "click", clickA);
}
}
<body>
<div id="divselect">
<cite>请选择分类</cite>
<ul>
<li id="li"><a href="javascript:;" selectid="1">ASP开发</a></li>
<li><a href="javascript:;" selectid="2">.NET开发</a></li>
<li><a href="javascript:;" selectid="3">PHP开发</a></li>
<li><a href="javascript:;" selectid="4">Javascript开发</a></li>
<li><a href="javascript:;" selectid="5">Java特效</a></li>
</ul>
</div>!
</body>
body,ul,li{ margin:0; padding:0; font-size:13px;}
ul,li{list-style:none;}
#divselect{width:536px; margin:80px auto; position:relative; z-index:1;}
#divselect cite{background-color: #FFF; width:500px; height:24px; line-height:24px; display:block; color:#807a62; cursor:text; font-style:normal; padding-left:4px; padding-right:30px; border:1px solid #333; }
#divselect ul{width:534px;border:1px solid #333; background-color:#FFF; position:absolute; z-index:2; margin-top:-1px; display:none;}
#divselect ul li{height:24px; line-height:24px;}
#divselect ul li a{display:block; height:24px; color:#333; text-decoration:none; padding-left:10px; padding-right:10px;}
.active {background-color: #CCC; }