求大神指導為什么,阻止不了上下鍵同時滾動頁面事件,已加上阻止語句,跪謝!
<!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.stopPropagation){
? ? ?event.stopPropagation();
? ? ?}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){
? ? ? ? ? ? ? e.preventDefault ? e.preventDefault() : e.returnValue = false;
? ? ? ? ? ? ?index++;
? ? ? ? ? ? ?if(index>=as.length){
? ? ? ? ? ? ? ?index=0;
? ? ? ? ? ? ?}
? ? ? ? ? ? ?as[index].style.background="#ccc";
? ? ? ? ? }
? ? ? ? ? // 如果按下了向上方向鍵
? ? ? ? ? if(e.keyCode==38){
? ? ? ? ? ? ?e.preventDefault ? e.preventDefault() : e.returnValue = false;
? ? ? ? ? ? ?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';
? ? ? ? ? ? }
? ? ? ? ? ? menu.style.display='none';
? ? ? ? ? ? index=-1; ? ?
? ? ? ? ? }
? ? ? ? }
} ?
? ? // 滑過滑過、離開、點擊每個選項時
? ? for(var i=0;i<as.length;i++){
? ? ?as[i].onmouseover=function(){
? ? ?this.style.background='#ccc';
? ? ? ? index=this.getAttribute("selectid")-1;
? ? ?}
? ? ?as[i].onmouseout=function(){
? ? ?this.style.background='none';
? ? ? ? index=-1;
? ? ?} ? ?
? ? ?as[i].onclick=function(){
? ? ?title.innerHTML=this.innerHTML;
? ? ? ? ?for(var i=0;i<as.length;i++){
? ? ? ? ? ? ? as[i].style.background='none';
? ? ? ? ? ? }
? ? ? ? ??
? ? ? ? ? ? index=-1; ? ?
? ? ?}
? ? }
? ??
? ? // 點擊頁面空白處時
? ? document.onclick=function(){
? ? ? menu.style.display='none';
? ? ? ?for(var i=0;i<as.length;i++){
? ? ? ? ? ? ? as[i].style.background='none';
? ? ? ? ? ? }
? ? ? ? ??
? ? ? ? ? ? index=-1; ? ?
? ? }
}
? ?</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>
2015-10-24
我覺得是這里有問題
?if(e.keyCode==38){
? ? ? ? ? ? ?e.preventDefault ? e.preventDefault() : e.returnValue = false;
這個方法阻止的是特定事件的默認行為,這里要阻止事件的話難道不是比如keypress 或者keydown之類的事件嗎,keyCode只是一個屬性,并不是鍵盤的事件。
我是這樣認為的,雖然不知道對不對。