亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

有點小問題,問題在代碼注釋里!勞煩了!

<!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,l=as.length;i<l;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)?{
????????????title.innerHTML=as[index].innerHTML;
????????????menu.style.display='none';
??????????};
??????????//?老師原本代碼如下:
??????????//?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;????
??????????//?}
??????????//?為什么要判斷?index!=-1?
??????????//?這里添加for循環是什么含義呢?
??????????//?為什么要初始化index,是為了下次使用鍵盤事件的時候又從第一個開始遍歷嗎?如果我不從第一個開始呢?
??????}
????}?
????
???//?滑過滑過、離開、點擊每個選項時
??????//?執行腳本
??????for(var?i=0;i<as.length;i++){
????????as[i].onmouseover=function(){
??????????this.style.background='#ccc';??????????//這里的this換成a[i]為什么會報錯呢?
????????}
????????as[i].onmouseout=function(){
??????????this.style.background='none';??????????//這里的this換成a[i]為什么會報錯呢?
????????}
????????as[i].onclick=function(){
??????????title.innerHTML=this.innerHTML;?????????//這里的this換成a[i]為什么會報錯呢?
????????}
??????}

???//?點擊頁面空白處時
???????//?執行腳本
???????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開發</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>
</html>

整個代碼可以執行,需要調試的話直接復制就好!老煩了

正在回答

2 回答

  1. 為什么要判斷?index!=-1? 因為如果不判斷該條件as[-1].innerHTML不存在會報錯

  2. 這里添加for循環是什么含義呢? 取消掉每一個<a>標簽的背景色,還原成初始狀態,使下一次打開選項時,沒有選項的背景色是灰色的。

  3. 為什么要初始化index,是為了下次使用鍵盤事件的時候又從第一個開始遍歷嗎?如果我不從第一個開始呢? 道理同上,還原初始狀態,使下一次打開選項時index為-1。如果不還原為-1,假設最后index值為3,那么下次打開選項時,你按down鍵,就不是第一個選項背景色變成灰色,而是第五個選項背景色變成灰色。

  4. 這里的this換成a[i]為什么會報錯呢? 因為頁面加載完成之后,i的值為as.length,而as[as.length]是不存在的,所以無法是它的背景色變成灰色,所以會報錯。而使用this,this是代表你鼠標滑過的那個元素,所以不存在這種情況。

????? ?以上是我個人看法,如果有錯,請指出加以改進吧。
0 回復 有任何疑惑可以回復我~
#1

黑色丶毛衣 提問者

非常感謝!
2015-11-07 回復 有任何疑惑可以回復我~

或許代碼截圖會更便利閱讀,我粘貼的時候忘了選擇Javascript語言了!

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

舉報

0/150
提交
取消

有點小問題,問題在代碼注釋里!勞煩了!

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

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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