<!doctype?html>
<html>
<head>
????<meta?charset="UTF-8">
????<title>下拉菜單</title>
??<style?type="text/css">
body,ul,li{?margin:0;?padding:0;?font-size:13px;}
ul,li{list-style:none;}
#divselect{width:186px;?margin:80px?auto;?position:relative;?z-index:10000;}
#divselect?cite{width:150px;?height:24px;line-height:24px;?display:block;?color:#807a62;?cursor:pointer;font-style:normal;
padding-left:4px;?padding-right:30px;?border:1px?solid?#333333;?
background:url(xjt.png)?no-repeat?right?center;}
#divselect?ul{width:184px;border:1px?solid?#333333;?background-color:#ffffff;?position:absolute;?z-index:20000;?margin-top:-1px;?display:none;}
#divselect?ul?li{height:24px;?line-height:24px;}
#divselect?ul?li?a{display:block;?height:24px;?color:#333333;?text-decoration:none;?padding-left:10px;?padding-right:10px;}
??</style>
???<script?type="text/javascript">
window.onload=function(){
??var?box=document.getElementById('divselect'),
??????title=box.getElementsByTagName('cite')[0],
??????menu=box.getElementsByTagName('ul')[0],
??????as=box.getElementsByTagName('a'),
????????index=-1;
???
????//?點擊三角時
????title.onclick=function(event){
??????event?=?event?||?window.event;
??????if(event.stopProgation){
??????????event.stopProgation();
??????}else{
??????????event.cancelBubble=true;
??????}
??????menu.style.display='block';
??????document.onkeyup=function?(e)?{
????????e=e?||?window.event;
????????for(var?i=0;?i<as.length;i++){
??????????as[i].style.background='none';
????????}
????????//如果按下了向下方向鍵
????????if?(e.keyCode==40)?{
??????????index++;
??????????if(index>=as.length){
????????????index=0;
??????????}
??????????as[index].style.background='#ccc';
????????}
????????//如果按下了向上鍵
????????if(e.keyCode==38){
??????????if(index<=0){
????????????index=as.length;
??????????}
??????????index--;
??????????as[index].style.background='#ccc';
????????}
????????//如果按下了回車鍵
????????if(e.keyCode==13?&&?index!=-1){
??????????title.innerHTML=as[index].innerHTML;
??????????for(var?i=0;i<as.length;i++){
????????????as[i].style.background='none';
??????????}
????????}else{
??????????menu.style.display='none';
??????????index=-1;
????????}
????????
??????}
????}??
????
????
???//?滑過滑過、離開、點擊每個選項時
???for(var?i=0;?i<as.length;i++){
??????as[i].onmouseover=function(){
????????this.style.background='#ccc';
??????}
??????as[i].onmouseout=function(){
????????this.style.background='none';
??????}
??????as[i].onclick=function?()?{
????????title.innerHTML=this.innerHTML;
??????}
???}
???//?點擊頁面空白處時
???document.onclick=function(){
?????menu.style.display='none';
???}
?}
???</script>
</head>
<body>
??<div?id="divselect">
??????<cite>請選擇分類</cite>
??????<ul>
?????????<li?id="li"><a?href="javascript:;"?selectid="1">ASP開發(fā)</a></li>
?????????<li><a?href="javascript:;"?selectid="2">.NET開發(fā)</a></li>
?????????<li><a?href="javascript:;"?selectid="3">PHP開發(fā)</a></li>
?????????<li><a?href="javascript:;"?selectid="4">Javascript開發(fā)</a></li>
?????????<li><a?href="javascript:;"?selectid="5">Java特效</a></li>
??????</ul>
????</div>
</body>
</html>
2017-03-13
上下鍵 不會收面板,
只有在選中條目onclick、選中按下回車,或者在別的地方onclick這三個時機收列表面板
注意選中條目onclick邏輯里面沒寫收面板,是因為冒泡到了document.onclick中的收面板邏輯。
可以看下我寫的,http://idcbgp.cn/article/16924
2016-09-13
第59-67行代碼,如果鍵盤按下的不是回車而且index!=-1
則在按了上下鍵,使index的值發(fā)生改變后,menu的display值變成‘none’