本文详细解析了使用JavaScript实现三级下拉菜单的核心代码。通过遍历子元素控制显示与隐藏状态,并动态替换对应图标以反映菜单激活或失活状态。重点讲解了如何处理父子菜单联动及特殊ID区间的展开逻辑,适用于传统Web管理系统的界面开发。
三级下拉菜单实现逻辑
三级下拉菜单的实现方法:
具体代码如下:
function list(idstr){
var name1="subtree"+idstr;
var name2="img"+idstr;
var objectobj=document.all(name1);
var imgobj=document.all(name2);
//alert(imgobj);
if(objectobj.style.display=="none"){
for(i=1;i<22;i++){
var name3="img"+i;
var name="subtree"+i;
var o=document.all(name);
if(o!=undefined){
o.style.display="none";
var image=document.all(name3);
//alert(image);
image.src="<%=basePath%>admin/images/ico04.gif";
if(idstr>12&&idstr<20){
document.getElementById("subtree11").style.display="";
document.getElementById("img11").src="<%=basePath%>admin/images/ico03.gif";
}
}
}
objectobj.style.display="";
imgobj.src="<%=basePath%>admin/images/ico03.gif";
}
else{
objectobj.style.display="none";
imgobj.src="<%=basePath%>admin/images/ico04.gif";
}
} 代码解析:例如
其中,idstr为用于区分不同子菜单及对应图片的数字标识符。通过document.all(name1)获取ID为name1(变量名)的子菜单元素,此处
通常仅存在一个元素。若判断当前状态为隐藏,则执行循环;若元素已定义(因通过i遍历可能获取到未定义的子菜单,故需判断存在性),则将除一级菜单外的所有子菜单(含二、三级)隐藏,并替换同级菜单图标,最后显示当前选中菜单并更新其图标。特殊情形:当idstr>12&&idstr<20时,表示二级菜单激活并展开三级菜单,如图所示:选中“论文管理”时,因其父级“成果管理”不可隐藏,故执行if(idstr>12&&idstr<20)后的代码块。else部分逻辑直观:若当前选中菜单已展开,则将其隐藏并更换图标。

图标状态切换功能
代码如下:
function tupian(idt){
var nametu="xiaotu"+idt;
var tp = document.getElementById(nametu);
tp.src="<%=basePath%>admin/images/ico05.gif";//ico05为白色正方形图标
for(var i=1;i<32;i++)
{
var nametu2="xiaotu"+i;
if(i!=idt*1)
{
var tp2=document.getElementById('xiaotu'+i);
if(tp2!=undefined)
{tp2.src="<%=basePath%>admin/images/ico06.gif";}//ico06为蓝色正方形图标
}
}
} 代码说明:仅用于切换图标以表示激活或失活状态。