5-1 编程挑战
本节编程练习不计算学习进度,请电脑登录imooc.com操作

编程挑战

小伙伴们,根据所学知识,实现下图所示的菜单效果,实现点击菜单中的向下三角展开菜单,点击页面空白处收起菜单,按下键盘上的向上、向下方向键可以选中对应的选项,鼠标点击或按下回车键将当前高亮的选项内容设为菜单的标题

效果图:

初始:

点击三角:

点击选中项:

任务

一、 点击菜单中的向下三角展开菜单

 

提示:
     1、点击三角时需阻止事件冒泡


二、 展开菜单之后,在document对象上绑定keyup事件,按下向下方向键,选中下一个选项,按下向上方向键,选中上一个选项,按下回车键菜单收起,显示选中项

 

提示:
1、 声明一个全局的index变量初值为-1
2、 按下向下方向键时index递增,当递增至大于等于菜单选项的总数时恢复为0
3、 按下向上方向键时判断index,如若小于等于0则设为菜单选项的总数,之后递减index
4、 根据index值将对应的选项设为当前(灰色背景)
5、 按下回车键时将对应选中的选项设为菜单标题,且将所有选项设为无背景,index恢复为-1,菜单收起

注意:没有任何选项被选中时,按下回车键不做任何操作

 

三、鼠标滑过每个选项时高亮显示,离开时去掉背景,点击高亮选项时菜单标题改变

 

提示:
   1.遍历所有a标签,绑定鼠标点击的事件

注意:要考虑到浏览器兼容,使用innerHTML,不要使用innerText

 

四、点击页面空白处收起菜单

 

提示:
   1.绑定在document对象上
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>下拉菜单</title>
  6. <style type="text/css">
  7. body,ul,li{ margin:0; padding:0; font-size:13px;}
  8. ul,li{list-style:none;}
  9. #divselect{width:186px; margin:80px auto; position:relative; z-index:10000;}
  10. #divselect cite{width:150px; height:24px;line-height:24px; display:block; color:#807a62; cursor:pointer;font-style:normal;
  11. padding-left:4px; padding-right:30px; border:1px solid #333333;
  12. background:url(xjt.png) no-repeat right center;}
  13. #divselect ul{width:184px;border:1px solid #333333; background-color:#ffffff; position:absolute; z-index:20000; margin-top:-1px; display:none;}
  14. #divselect ul li{height:24px; line-height:24px;}
  15. #divselect ul li a{display:block; height:24px; color:#333333; text-decoration:none; padding-left:10px; padding-right:10px;}
  16. </style>
  17. <script type="text/javascript">
  18. window.onload=function(){
  19. var box=document.getElementById('divselect'),
  20. title=box.getElementsByTagName('cite')[0],
  21. menu=box.getElementsByTagName('ul')[0],
  22. as=box.getElementsByTagName('a'),
  23. index=-1;
  24.  
  25. // 点击三角时
  26. title.onclick=function(event){
  27. // 执行脚本
  28. }
  29.  
  30. // 滑过滑过、离开、点击每个选项时
  31. // 执行脚本
  32.  
  33. // 点击页面空白处时
  34. // 执行脚本
  35. }
  36. </script>
  37. </head>
  38. <body>
  39. <div id="divselect">
  40. <cite>请选择分类</cite>
  41. <ul>
  42. <li id="li"><a href="javascript:;" selectid="1">ASP开发</a></li>
  43. <li><a href="javascript:;" selectid="2">.NET开发</a></li>
  44. <li><a href="javascript:;" selectid="3">PHP开发</a></li>
  45. <li><a href="javascript:;" selectid="4">Javascript开发</a></li>
  46. <li><a href="javascript:;" selectid="5">Java特效</a></li>
  47. </ul>
  48. </div>
  49. </body>
  50. </html>
返回课程