<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
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
解决方案 »
- 点击超链接就下载Word文档..那个路径是怎么写,,
- js脚本文件如何共用?
- 类似csdn论坛两周内不用再登录,cookie具体怎么实现啊?
- 1.html里有<iframe name="t" src=>怎样绑定t的onload事件,也就是在1.html中怎样使t里的页面加载完后执行某一动作?
- 求教:js 如何控制浏览器中的字体大小
- jq 读取带id值的input元素
- html中有一img,id为img2,如何在javascript中得到这个img?
- 一个关于引用.js文件中的function的问题。
- 在javascript中可以设置session吗?
- 一个关于聊天室的问题啊?给分啊!!!
- JS弹出输入框并能提交表单
- 如何使用javascript动态创建css的class
<!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"); //得到 id="levelmenu" div 里面包含的所有的div ,返回一个数组
var length=divObj.length; //得到数组的长度
var agreeDiv=new Array();
for(var i=0;i <length;i++){
if(divObj[i].className.indexOf("unit")>=0){ //如果div的样式中包含 "unit", 就把这个div 放到数组中,并且赋一个onclick 事件,当单击这个div时就执行showCurrentMenu函数
agreeDiv.push(divObj[i]);
divObj[i].onclick=function(event){
showCurrentMenu(agreeDiv,this,event);
}
}
}
}
//当单击某个div时
function showCurrentMenu(agreeDiv,currentObj,event){
if(!event)
{
event=window.event;
}
//得到你单击的那个对象 下面为了兼容firefox.
var eventObj=event.srcElement?event.srcElement:event.target;
var length=agreeDiv.length;
for(var i=0;i <length;i++){
//把除了刚单击的div 之外的其它的3个div 设定为隐藏
if(eventObj.parentNode==agreeDiv[i] || eventObj.nodeName!="H5")
{
continue;
}
agreeDiv[i].className="unit current";
}
//如果单击的是div里面的 H5标签 设定刚单击的这个div 是隐藏还是显示
if(eventObj.nodeName=="H5"){
if(eventObj.parentNode.className=="unit"){
eventObj.parentNode.className="unit current" //如果当前单击的这个div是隐藏的,设定div的样式为 "unit current" 也就是显示
}else{
eventObj.parentNode.className="unit" //如果当前单击的这个div是显示的,设定div的样式为 "unit" 也就是隐藏
}
}
}
init(); //首先执行这个方法,进行初始化
</script>可以看出来它是通过 改变 div 的样式来实现的.
lz 看一下它的css 的定义吧
//把除了刚单击的div 之外的其它的3个div 设定为隐藏
if(eventObj.parentNode==agreeDiv[i] || eventObj.nodeName!="H5")
{
continue;
}
agreeDiv[i].className="unit current"; //改为unit }
点击后的暗色图片在那里修改: 主要是它在 css中写了这句 #levelmenu div.current h5{background-position:left bottom;} 来实现的