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

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

5-1編程引發的一些問題

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

?menu.style.display = 'block';

?if(event.stopPropagation){

event.stopPropagation();?

?}else{

? ? event.cancelBubble = true; ??

?}

?document.onkeyup = function(event){

event = event||window.event;

if(event.keyCode==40){

index++;

if(index>=as.length) index=0;

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

?as[i].style.background = '#fff';

}

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

}?

if(event.keyCode==38){

index--;

if(index<0) index=as.length-1;

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

?as[i].style.background = '#fff';

}

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

}

if(event.keyCode==13){

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

?as[i].style.background = '#fff';

}

title.innerHTML = as[index].innerHTML;

menu.style.display = 'none';

} ?

?}

? ? } ?

? ??

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

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

? ?as[i].num = i

as[i].onmouseover = function(){

this.style.background = '#ccc'

index = as[i].num-1; ?

}

as[i].onmouseout = function(){

this.style.background = '#fff' ?

}

as[i].onclick = function(event){

event = event||window.event;

if(event.stopPropagation){

? event.stopPropagation();?

}else{

? event.cancelBubble = true; ??

}

menu.style.display = 'none';

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

http://img1.sycdn.imooc.com//5735d7710001718504210372.jpg


5-1的編程挑戰基本能實現,還有一個問題就是,當你用鼠標滑過某個選項時,按下enter鍵,<cite>里不會有變化,不知為何,求大神給改改。

還有就是圖片中的代碼,這是常用的遍歷,但是我不明白為什么這么寫程序,for循環不是只能實行一次,為什么鼠標可以在各個選項中不限制的滑動

正在回答

1 回答

非大神不請自答。

  1. 由于你的代碼里面對于按enter的鍵盤操作是建立在as這個數組里。對這個數組進行操作只能由鼠標點擊或者鍵盤上下進行操作。如果你想劃定按enter也可以操作,那你可以加入鼠標滑過事件,按著上面對數組操作的方式進行操作。

  2. 這個遍歷的確只能執行一次,不過功能是給元素加上事件。然后元素對事件進行響應。

我也是才學,談的是自己的理解,如果有錯誤希望大家指正,歡迎一起探討。

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

Dream0703 提問者

謝謝謝,遍歷的事情明白了。加個好友吧
2016-05-14 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
DOM事件探秘
  • 參與學習       99534    人
  • 解答問題       1305    個

DOM事件?本課程會通過實例來給小伙伴們講解如何使用這些事件

進入課程

5-1編程引發的一些問題

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

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

幫助反饋 APP下載

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

公眾號

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