首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

帮忙解释一上上拉菜单的js代码

2012-11-14 
帮忙解释一下下拉菜单的js代码我刚学js,好多不东的地方希望大家啊帮忙,尽量详细点!不胜感谢!!DOCTYPE htm

帮忙解释一下下拉菜单的js代码
我刚学js,好多不东的地方希望大家啊帮忙,尽量详细点!不胜感谢!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript"></script>
<title>left</title>
<style type="text/css">
body {font-family:Arial, Helvetica, sans-serif;font-size:12px;width:166px;margin:0 auto;}
ul,h5{margin:0;padding:0;list-style:none;}
#levelmenu{margin:8px 0 0 8px;}
#levelmenu div.unit ul{width:127px;border:solid 1px #1A5189;border-top:none;padding:8px 0 8px 20px;}
#levelmenu h5{width:149px;height:25px;line-height:26px;overflow:hidden;background:#515E7B url(http://2.bp.blogspot.com/_bdBPvgEipxw/SSO2rZ3z94I/AAAAAAAAAQE/WH2dc6R8TzQ/s320/menubg.gif) left top no-repeat;text-indent:30px;font-weight:normal;color:#fff;margin:0;font-size:100%;cursor:default;}
#levelmenu div.unit ul{display:none;line-height:23px;}
 #levelmenu div.current ul{display:block;}
  #levelmenu div.current ul li a{color:#3B475F;text-decoration:none;}
  #levelmenu div.current ul li a:hover{text-decoration:underline;}
 #levelmenu div.current h5{background-position:left bottom;}
</style>
</head>
<body>
<div id="levelmenu">
 <div class="unit current">
  <h5>新闻管理</h5>
  <ul>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  </ul>
 </div>
 <div class="unit">
  <h5>新闻管理</h5>
  <ul>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  </ul>
 </div>
 <div class="unit">
  <h5>新闻管理</h5>
  <ul>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  </ul>
 </div>
 <div class="unit">
  <h5>新闻管理</h5>
  <ul>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  <li><a href="#">新闻管理</a></li>
  </ul>
 </div>
</div>
</body>
</html>
<script type="text/javascript">
function init(){
 if(!document.getElementById || !document.getElementsByTagName){retun;}
 var arrayDiv=document.getElementById("levelmenu");
 if(!arrayDiv){return;}
 var divObj=arrayDiv.getElementsByTagName("div");
 var length=divObj.length;
 var agreeDiv=new Array();
 for(var i=0;i<length;i++){
  if(divObj[i].className.indexOf("unit")>=0){
  agreeDiv.push(divObj[i]);
  divObj[i].onclick=function(event){


  showCurrentMenu(agreeDiv,this,event);
  }
  }
 }
}
function showCurrentMenu(agreeDiv,currentObj,event){
 if(!event){event=window.event;}
 var eventObj=event.srcElement?event.srcElement:event.target;
 var length=agreeDiv.length;
 for(var i=0;i<length;i++){
  if(eventObj.parentNode==agreeDiv[i] || eventObj.nodeName!="H5"){continue;}
  agreeDiv[i].className="unit";
 }
 if(eventObj.nodeName=="H5"){
  if(eventObj.parentNode.className=="unit"){
  eventObj.parentNode.className="unit current"
  }else{
  eventObj.parentNode.className="unit"
  }
 }
}
init();
</script>

[解决办法]
<script type="text/javascript"> 
function init(){ 
//断判是否支持document.getElementById 和 document.getElementsByTagName
if(!document.getElementById || !document.getElementsByTagName){retun;} 
var arrayDiv=document.getElementById("levelmenu"); 
if(!arrayDiv){return;} 
var divObj=arrayDiv.getElementsByTagName("div");//这句就是获取到包在ul外面的所有div了 ,是个数组
var length=divObj.length; 
var agreeDiv=new Array(); 
for(var i=0;i <length;i++){ 
if(divObj[i].className.indexOf("unit")>=0){ //这个条件是说:如果这个div的class里有unit这么个字符串就成立
//其实divObj里的每个div的class都有
agreeDiv.push(divObj[i]);//把这个div压入数组; 
divObj[i].onclick=function(event){ //给这个每个 div 添加click事件
showCurrentMenu(agreeDiv,this,event); 




function showCurrentMenu(agreeDiv,currentObj,event){ 
if(!event){event=window.event;} //获取事件对象
var eventObj=event.srcElement?event.srcElement:event.target; //获取事件源对象
var length=agreeDiv.length; 
for(var i=0;i <length;i++){ 
if(eventObj.parentNode==agreeDiv[i] || eventObj.nodeName!="H5"){continue;} //parentNode表示父结点
agreeDiv[i].className="unit"; 

if(eventObj.nodeName=="H5"){ 
if(eventObj.parentNode.className=="unit"){ 
eventObj.parentNode.className="unit current" 
}else{ 
eventObj.parentNode.className="unit" 



init(); 
</script>

其实我这么解释你可能跟本还不懂这个菜单的运作原理

这个还在结合css,

要学富客户端你最少要懂三样css,js,dom
[解决办法]


楼主注意一下这个图片

热点排行