第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問為什么我的代碼這樣寫鼠標可以控制,可是鍵盤就控制不了呢?代碼錯在哪?怎么改

<!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,

btn = false;


// 點擊三角時

title.onclick = function(event) {

event = event || window.event;

if(event.stopPropagation) {

event.stopPropagation();

} else {

event.cancelBubble();

}

if(btn == false) {

menu.style.display = "block";

btn = true;

} else {

menu.style.display = "none";

btn = false;

}


// 鍵盤事件

document.onkeyup = function(event) {

e = event || window.event;

if(e.keyCode == 40) {

index++;

if(index >= as.length) {

index = 0;

}

changebgd();

}

if(e.keyCode == 38) {

if(index <= 0) {

index = as.length;

}

index--;

changebgd();

}

}


}


// 鼠標滑過、離開、點擊每個選項時

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

as[i].index = i;//得這樣傳值否則匿名函數(shù)獲取不到i的值

as[i].onmouseover = function() {

for(var j = 0; j < as.length; j++) {

as[j].style.background = "none";

}

this.style.background = "#ccc";

index = this.index;

keyenter();

}

// ? as[i].onmouseout=function(){

// ? ? ? this.style.background="#fff";

// ? }上面那樣寫、鍵盤上下移動后鼠標移動,LI不存在兩個“被選”。

as[i].onclick = function() {

title.innerHTML = this.innerHTML;

reset();

}

// 執(zhí)行腳本

}


// 執(zhí)行腳本


function changebgd() {

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

as[i].style.background = "none";

}

as[index].style.background = "#ccc";

keyenter();

}


function keyenter() {

document.onkeyup = function(event) {

event = event || window.event;

if(event.keyCode == 13 && index != -1) {

title.innerHTML = as[index].innerHTML;

reset();

document.onkeyup=null;

}

}

}


// 點擊頁面空白處時

document.onclick = function() {

reset();

}


//復位函數(shù)

function reset() {

if(btn == true) {

if(index != -1) {

as[index].style.background = "none";

index = -1;

}


menu.style.display = "none";

btn = false;

}


}

// 執(zhí)行腳本

}


</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>

如果改,怎么個改法最好最少呢

正在回答

3 回答

設置index值就是為了鼠標和鍵盤可以共同利用這個值控制選中項,每次鼠標經過或上下鍵按動時index值都在刷新,所以沒必要到處調用keyenter()函數(shù),只需要判斷按鍵的鍵值的三種情況進行處理或者調用處理函數(shù),你調用函數(shù),各種嵌套,函數(shù)內又觸發(fā)事件,反而有點亂了。

還有個小問題,如果點開下拉列表,不選選項的話點空白處,選項隱藏不了,因為不選選項的話index值為-1,reset()函數(shù)第一句話走不通。建議:

1、將判斷鍵值的三種情況寫到一起,document.onkeyup=function(){} 里面;

2、將keyenter()中只留處理的兩行代碼;

3、去掉鼠標劃過和函數(shù)changeBgd()中的keyenter()函數(shù)調用;

4、在判斷回車鍵條件中調用keyenter()函數(shù);

5、將reset()函數(shù)第一句話改為遍歷列表全部設置背景色;

<!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,
????????btn=false;
????//?點擊三角時
????title.onclick=function(event){
????????event=event||window.event;
????????if(event.stopPropagation){
????????????event.stopPropagation();
????????}else{
????????????event.cancelBubble();
????????}
????????if(btn==false){
???????????menu.style.display="block";
???????????btn=true;
???????}else?{
???????????menu.style.display="none";
???????????btn=false;
???????}
???????
???}
????//?鼠標滑過、離開、點擊每個選項時
???for(var?i=0;i<as.length;i++){
???????as[i].index=i;
???????as[i].onmouseover=function(){
???????????for(var?j=0;j<as.length;j++){
???????????????as[j].style.background="#fff";
???????????}
???????????this.style.background="#ccc";
???????????index=this.index;
???????????//keyenter();
???????}
????//???as[i].onmouseout=function(){
????//???????this.style.background="#fff";
????//???}上面那樣寫、鍵盤上下移動后鼠標移動,LI不存在兩個“被選”。
???????as[i].onclick=function(){
???????????title.innerHTML=this.innerHTML;
???????????reset();
???????}
??????//?執(zhí)行腳本
}??
???//?鍵盤事件
???document.onkeyup=function(event){
???????event=event||window.event;
???????if(event.keyCode==40){
???????????index++;
???????????if(index>=as.length){
???????????????index=0;
???????????}
???????????changeBgd();
???????}
???????if(event.keyCode==38){
???????????if(index<=0){
???????????????index=as.length;
???????????}
???????????index--;
???????????changeBgd();
???????}
???????if(event.keyCode==13){
???????????keyenter();
???????}
???}
??????//?執(zhí)行腳本
???function?keyenter(){
????????title.innerHTML=as[index].innerHTML;
????????reset();
???????
???}
???function?changeBgd(){
???????//alert("1");
???????for(var?i=0;i<as.length;i++){
???????????as[i].style.background="none";
???????}
???????as[index].style.background="#ccc";
???????//keyenter();
???}
???//?點擊頁面空白處時
???document.onclick=function(){
???????reset();
???}
???//復位函數(shù)
???function?reset(){
???????for(var?i=0;i<as.length;i++){
??????????as[i].style.background="none";
???????}
??????????index=-1;
??????????menu.style.display="none";
??????????btn=false;?
???}?
?}
???</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>


0 回復 有任何疑惑可以回復我~
#1

jazia 提問者

非常感謝!大神
2016-09-22 回復 有任何疑惑可以回復我~
#2

jazia 提問者

這樣改條理清晰多了,原來不用調用keyenter函數(shù)的,按回車鍵它就自動調用了,不用我們寫,謝謝仔細認真的回答
2016-09-22 回復 有任何疑惑可以回復我~

求教一下,你的“//?鼠標滑過、離開、點擊每個選項時”這段代碼中,這個as[i].index=i;是什么意思??

0 回復 有任何疑惑可以回復我~

建議你下載源碼看下吧,封裝函數(shù)有問題,各種函數(shù)嵌套反而更亂了

0 回復 有任何疑惑可以回復我~
#1

jazia 提問者

謝謝回答,不用了,樓上解決了。
2016-09-22 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請問為什么我的代碼這樣寫鼠標可以控制,可是鍵盤就控制不了呢?代碼錯在哪?怎么改

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號