求助,树型展开菜单问题 请先看一上演示,问题我都写在上面了http://www.websjy.com/club/html/html.html展开后,高度上有问题。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 它的JS是判断“li” JS中的代码是:allhight=obj.getElementsByTagName("li").length*26;//26为每个菜单项的高度,用来计算二级菜单的总高度。的 menu_left.jsfunction getElementsByClassName(searchClass, node,tag){ if(document.getElementsByClassName){return document.getElementsByClassName(searchClass)} else{ node = node || document; tag = tag || "*"; var classes = searchClass.split(" "), elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag), patterns = [], returnElements = [], current, match; var i = classes.length; while(--i >= 0){patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));} var j = elements.length; while(--j >= 0){ current = elements[j]; match = false; for(var k=0, kl=patterns.length; k<kl; k++){ match = patterns[k].test(current.className); if (!match) break; } if (match) returnElements.push(current); } return returnElements; } }/*通用加载函数,页面中如果要用到onload函数在窗体一加载时就执行的代码,可以直接添加到这个函数,否则会引起多个onload函数的执行冲稿 带参数的调用方法:addLoadEvent(new Function("refurFrame('单词管理');"));*/function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload!='function'){ window.onload=func; } else{ window.onload=function(){ oldonload(); func(); } }}/*判断是否有className的函数,调用例子为:o.className=o.addClass(o,"normal");*/function hasClass(element, className) { var reg = new RegExp('(\\s|^)'+className+'(\\s|$)'); return element.className.match(reg); } /*动态添加className的函数,调用例子为:addClass(document.getElementById("test"), "test");*/function addClass(element, className) { if (!this.hasClass(element, className)){ element.className += " "+className;/*如果有多个样式叠加,则用这种方式,如class="style1 style2"*/ /*element.className = className; */ } } /*动态删除className的函数,调用例子为:removeClass(document.getElementById("test"), "test") */function removeClass(element, className) { if (hasClass(element, className)){ var reg = new RegExp('(\\s|^)'+className+'(\\s|$)'); element.className = element.className.replace(reg,' '); } } /*获取第一个子节点的函数,兼容FF*/function getFirstChild(obj){ var firstDIV; for (i=0; i<obj.childNodes.length; i++){ if (obj.childNodes[i].nodeType==1){ firstDIV=obj.childNodes[i]; return firstDIV; } else continue; }}addLoadEvent(new Function("hovermenu('level1','level2','hove','cur');"));//menu代表菜单总的ID名称//level1代表一级菜单项的父容器,level2代表二级菜单项的父容器,//后面的三个参数style1,style2,style3分别代表鼠标移入,移出,点击的三态样式名addLoadEvent(new Function("submenu('level2','hove1','hove1');"));/*滑动显隐菜单列表*/var temp;var temp1;function hovermenu(cssName1,cssName2,style2,style3){ var ArrLinks=getElementsByClassName(cssName1);//一级菜单父容器的数繿 var ArrLevel = new Array();//第一级菜单的数组 for(var i=0;i<ArrLinks.length;i++){ var curobj= getFirstChild(ArrLinks[i]);//获得第一个子对象 ArrLevel.push(curobj); } var ArrDivs=getElementsByClassName(cssName2);//二级菜单的父容器数组,要显示的二级菜单容嗿 for(var i=0;i<ArrLinks.length;i++){ var obj=getFirstChild(ArrLinks[i]);//获得第一个子对象 obj.index=i obj.onmouseover= function(){overme(this,ArrLevel,style2,temp)}; obj.onmouseout=function(){outme(this,ArrLevel,style2,temp)}; obj.onclick=function(){clickme(this,ArrLinks,ArrDivs,style2,style3,temp)}; obj.onfocus=function(){this.blur()};//去掉虚线柿 } }//二级菜单绑定事件function submenu(cssName2,style2,style3){ var ArrLinks=getElementsByClassName(cssName2);//一级菜单父容器的数繿 var ArrLevel = new Array();//第一级菜单的数组 for(var i=0;i<ArrLinks.length;i++){ var sublinks= ArrLinks[i].getElementsByTagName('A');//获得第一个子对象 for(var m=0;m<sublinks.length;m++){ ArrLevel.push(sublinks[m]); } } for(var i=0;i<ArrLevel.length;i++){ var obj=ArrLevel[i]; obj.index=i obj.onmouseover= function(){overme(this,ArrLevel,style2,temp1)}; obj.onmouseout=function(){outme(this,ArrLevel,style2,temp1)}; obj.onclick=function(){subclick(this,ArrLevel,style2,style3,temp1)}; obj.onfocus=function(){this.blur()};//去掉虚线柿 } }function overme(o,links,style2,state){ if (state!=o.index){ addClass(o,style2); }}function outme(o,links,style2,state){ if (state!=o.index){ removeClass(o,style2); };}//一级菜单点击事乿function clickme(o,links,divs,style2,style3,state){ //要判断是否有子菜单项 var objUl=links[o.index].getElementsByTagName('UL'); var subNum=objUl.length;//是否有二级菜单,0为无,大丿为有; if (state!=o.index){ for(var i=0;i<divs.length;i++){ if(subNum>0){//如果存在二级菜单项,即隐藏它 divs[i].style.display="none"; //closeObj(divs[i]); } } if(subNum>0){//如果存在二级菜单项,显示当前点击的二级菜勿 objUl[0].style.display="block"; showObj(objUl[0]); } temp=o.index; }else{ if(objUl[0].style.display=="block") objUl[0].style.display="none" else objUl[0].style.display="block" } for(var i=0;i<links.length;i++){ var curobj= getFirstChild(links[i]);//获得第一个子对象 removeClass(curobj,style3); removeClass(curobj,style2); } addClass(o,style3);}//二级菜单点击事件function subclick(o,links,style2,style3,state){ if (state!=o.index){ for(var i=0;i<links.length;i++){ removeClass(links[i],style2); } temp1=o.index; addClass(o,style2); }}//缓冲显示var flag=0;function showObj(obj){ var allhight; allhight=obj.getElementsByTagName("li").length*26;//26为每个菜单项的高度,用来计算二级菜单的总高度⾿ obj.style.height="1px"; var changeW=function(){ var obj_h=parseInt(obj.style.height); if(obj_h<=allhight){ obj.style.height=(obj_h+Math.ceil((allhight-obj_h)/10))+"px"; } else{ clearInterval(bw1); } } bw1= setInterval(changeW,20);//时间开僿 if(flag>0){ clearInterval(bw2); }}//缓冲关闭function closeObj(obj){ flag++; var closeDiv=function(){ clearInterval(bw1); var obj_h=parseInt(obj.style.height); if(obj_h>1){ obj.style.height=(obj_h-Math.ceil(obj_h)/100)+"px"; } else{ clearInterval(bw2); obj.style.display="none"; } } bw2= setInterval(closeDiv,1); //alert(flag)}left.htm 中的JS修改function openP(_id) { var select_id = parseInt(_id.replace("box","")); if(document.getElementById(_id).style.display=="block") document.getElementById(_id).style.display="none"; else document.getElementById(_id).style.display="block"; for (i=1;i<=3;i++) { if(i!=select_id) document.getElementById("box"+i).style.display = "none"; } } 网上的这个我已经按照你说的更新了:http://www.websjy.com/club/html/html.html 看一下这个http://www.111cn.net/js_a/76/984a3a2f920f28ee2cf62225db180a7a.htm# 中间的高度是因为你JS代码 171行 allhight=obj.getElementsByTagName("li").length*26这样子肯定是不对的,你检测obj下面所有的li,然后乘以高度26,但是,系统设置下,一级li只有3个,li内部的li不能计算入内,你可以这样: allhight= getElementsByClassName("level3").length*26;getElementsByClassName这个方法你内部就有,取样式为level3的li,或者你自己判断,obj下的一级li menu_left.jsfunction getElementsByClassName(searchClass, node,tag){ if(document.getElementsByClassName){return document.getElementsByClassName(searchClass)} else{ node = node || document; tag = tag || "*"; var classes = searchClass.split(" "), elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag), patterns = [], returnElements = [], current, match; var i = classes.length; while(--i >= 0){patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));} var j = elements.length; while(--j >= 0){ current = elements[j]; match = false; for(var k=0, kl=patterns.length; k<kl; k++){ match = patterns[k].test(current.className); if (!match) break; } if (match) returnElements.push(current); } return returnElements; } }/*通用加载函数,页面中如果要用到onload函数在窗体一加载时就执行的代码,可以直接添加到这个函数,否则会引起多个onload函数的执行冲稿 带参数的调用方法:addLoadEvent(new Function("refurFrame('单词管理');"));*/function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload!='function'){ window.onload=func; } else{ window.onload=function(){ oldonload(); func(); } }}/*判断是否有className的函数,调用例子为:o.className=o.addClass(o,"normal");*/function hasClass(element, className) { var reg = new RegExp('(\\s|^)'+className+'(\\s|$)'); return element.className.match(reg); } /*动态添加className的函数,调用例子为:addClass(document.getElementById("test"), "test");*/function addClass(element, className) { if (!this.hasClass(element, className)){ element.className += " "+className;/*如果有多个样式叠加,则用这种方式,如class="style1 style2"*/ /*element.className = className; */ } } /*动态删除className的函数,调用例子为:removeClass(document.getElementById("test"), "test") */function removeClass(element, className) { if (hasClass(element, className)){ var reg = new RegExp('(\\s|^)'+className+'(\\s|$)'); element.className = element.className.replace(reg,' '); } } /*获取第一个子节点的函数,兼容FF*/function getFirstChild(obj){ var firstDIV; for (i=0; i<obj.childNodes.length; i++){ if (obj.childNodes[i].nodeType==1){ firstDIV=obj.childNodes[i]; return firstDIV; } else continue; }}addLoadEvent(new Function("hovermenu('level1','level2','hove','cur');"));//menu代表菜单总的ID名称//level1代表一级菜单项的父容器,level2代表二级菜单项的父容器,//后面的三个参数style1,style2,style3分别代表鼠标移入,移出,点击的三态样式名addLoadEvent(new Function("submenu('level2','hove1','hove1');"));/*滑动显隐菜单列表*/var temp;var temp1;function hovermenu(cssName1,cssName2,style2,style3){ var ArrLinks=getElementsByClassName(cssName1);//一级菜单父容器的数繿 var ArrLevel = new Array();//第一级菜单的数组 for(var i=0;i<ArrLinks.length;i++){ var curobj= getFirstChild(ArrLinks[i]);//获得第一个子对象 ArrLevel.push(curobj); } var ArrDivs=getElementsByClassName(cssName2);//二级菜单的父容器数组,要显示的二级菜单容嗿 for(var i=0;i<ArrLinks.length;i++){ var obj=getFirstChild(ArrLinks[i]);//获得第一个子对象 obj.index=i obj.onmouseover= function(){overme(this,ArrLevel,style2,temp)}; obj.onmouseout=function(){outme(this,ArrLevel,style2,temp)}; obj.onclick=function(){clickme(this,ArrLinks,ArrDivs,style2,style3,temp)}; obj.onfocus=function(){this.blur()};//去掉虚线柿 } }//二级菜单绑定事件function submenu(cssName2,style2,style3){ var ArrLinks=getElementsByClassName(cssName2);//一级菜单父容器的数繿 var ArrLevel = new Array();//第一级菜单的数组 for(var i=0;i<ArrLinks.length;i++){ var sublinks= ArrLinks[i].getElementsByTagName('A');//获得第一个子对象 for(var m=0;m<sublinks.length;m++){ ArrLevel.push(sublinks[m]); } } for(var i=0;i<ArrLevel.length;i++){ var obj=ArrLevel[i]; obj.index=i obj.onmouseover= function(){overme(this,ArrLevel,style2,temp1)}; obj.onmouseout=function(){outme(this,ArrLevel,style2,temp1)}; obj.onclick=function(){subclick(this,ArrLevel,style2,style3,temp1)}; obj.onfocus=function(){this.blur()};//去掉虚线柿 } }function overme(o,links,style2,state){ if (state!=o.index){ addClass(o,style2); }}function outme(o,links,style2,state){ if (state!=o.index){ removeClass(o,style2); };}//一级菜单点击事乿function clickme(o,links,divs,style2,style3,state){ //要判断是否有子菜单项 var objUl=links[o.index].getElementsByTagName('UL'); var subNum=objUl.length;//是否有二级菜单,0为无,大丿为有; if (state!=o.index){ for(var i=0;i<divs.length;i++){ if(subNum>0){//如果存在二级菜单项,即隐藏它 divs[i].style.display="none"; //closeObj(divs[i]); } } if(subNum>0){//如果存在二级菜单项,显示当前点击的二级菜勿 objUl[0].style.display="block"; showObj(objUl[0]); } temp=o.index; }else{ if(objUl[0].style.display=="block") objUl[0].style.display="none" else objUl[0].style.display="block" } for(var i=0;i<links.length;i++){ var curobj= getFirstChild(links[i]);//获得第一个子对象 removeClass(curobj,style3); removeClass(curobj,style2); } addClass(o,style3);}//二级菜单点击事件function subclick(o,links,style2,style3,state){ if (state!=o.index){ for(var i=0;i<links.length;i++){ removeClass(links[i],style2); } temp1=o.index; addClass(o,style2); }}//缓冲显示var flag=0;function showObj(obj){ var allhight; allhight=obj.clientHeight;//obj.getElementsByTagName("li").length*26;//26为每个菜单项的高度,用来计算二级菜单的总高度⾿ obj.style.height="1px"; var changeW=function(){ var obj_h=parseInt(obj.style.height); if(obj_h<=allhight){ obj.style.height=(obj_h+Math.ceil((allhight-obj_h)/10))+1+"px"; } else{ clearInterval(bw1); } } // bw1= setInterval(changeW,20);//时间开僿 if(flag>0){ clearInterval(bw2); }}//缓冲关闭function closeObj(obj){ flag++; var closeDiv=function(){ clearInterval(bw1); var obj_h=parseInt(obj.style.height); if(obj_h>1){ obj.style.height=(obj_h-Math.ceil(obj_h)/100)+"px"; } else{ clearInterval(bw2); obj.style.display="none"; } } bw2= setInterval(closeDiv,1); //alert(flag)}left.htmfunction openP(_id) { var select_id = parseInt(_id.replace("box","")); if(document.getElementById(_id).style.display=="block"){ document.getElementById(_id).style.display="none"; updateParentHeight(document.getElementById(_id)); }else{ document.getElementById(_id).style.display="block"; updateParentHeight(document.getElementById(_id)); } for (i=1;i<=3;i++) { if(i!=select_id) document.getElementById("box"+i).style.display = "none"; } }function updateParentHeight(obj){ var p = obj.parentElement ; while(p&&p.tagName.toLowerCase()!="ul"){ p = p.parentElement; } if(p&&p.tagName.toLowerCase()=="ul"){ p.style.height=obj.parentElement.clientHeight+"px"; }} //注p在index里面,p的可能取值是0,2,1var index = 3;function showDetail(p){$("#userInfo p").click(function(){for(var i=0; i<index; i++){$("#userInfo index").removeClass('acss a');$(this).removeClass('acss a').addClass('acss a');}});}怎样才能把javascript的var变量,放到id属性中????急急急 有谁知道 淘宝的数据魔方前台应用的什么技术! 如何用实现Javascript实现在GridView上的check全选 怎么样拆分字符串 JS导航条 请教isNaN()这个函数是什么意思啊? 求助:如何在同一个域名的AA目录下读取BB目录下的cookie 利用网站做一个进销存系统!遇到一点小问题. 请教关于用showModelessDialog打开一个末态显示的新窗口的问题。 寻求好的js站点! js获取不到控件value,求大神! 谁帮我解一下这个页面中的部分加密代码呢? 如何在HTML 里面调用 script 代码?
if(document.getElementsByClassName){return document.getElementsByClassName(searchClass)}
else{
node = node || document;
tag = tag || "*";
var classes = searchClass.split(" "),
elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag),
patterns = [],
returnElements = [],
current,
match;
var i = classes.length;
while(--i >= 0){patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));}
var j = elements.length;
while(--j >= 0){
current = elements[j];
match = false;
for(var k=0, kl=patterns.length; k<kl; k++){
match = patterns[k].test(current.className);
if (!match) break;
}
if (match) returnElements.push(current);
}
return returnElements;
}
}/*通用加载函数,页面中如果要用到onload函数在窗体一加载时就执行的代码,可以直接添加到这个函数,否则会引起多个onload函数的执行冲稿
带参数的调用方法:addLoadEvent(new Function("refurFrame('单词管理');"));
*/
function addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!='function'){
window.onload=func;
}
else{
window.onload=function(){
oldonload();
func();
}
}
}/*判断是否有className的函数,调用例子为:o.className=o.addClass(o,"normal");*/
function hasClass(element, className) {
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
return element.className.match(reg);
}
/*动态添加className的函数,调用例子为:addClass(document.getElementById("test"), "test");*/
function addClass(element, className) {
if (!this.hasClass(element, className)){
element.className += " "+className;/*如果有多个样式叠加,则用这种方式,如class="style1 style2"*/
/*element.className = className; */
}
}
/*动态删除className的函数,调用例子为:removeClass(document.getElementById("test"), "test") */
function removeClass(element, className) {
if (hasClass(element, className)){
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
element.className = element.className.replace(reg,' ');
}
}
/*获取第一个子节点的函数,兼容FF*/
function getFirstChild(obj){
var firstDIV;
for (i=0; i<obj.childNodes.length; i++){
if (obj.childNodes[i].nodeType==1){
firstDIV=obj.childNodes[i];
return firstDIV;
}
else
continue;
}
}addLoadEvent(new Function("hovermenu('level1','level2','hove','cur');"));
//menu代表菜单总的ID名称
//level1代表一级菜单项的父容器,level2代表二级菜单项的父容器,
//后面的三个参数style1,style2,style3分别代表鼠标移入,移出,点击的三态样式名
addLoadEvent(new Function("submenu('level2','hove1','hove1');"));/*滑动显隐菜单列表*/
var temp;
var temp1;
function hovermenu(cssName1,cssName2,style2,style3){
var ArrLinks=getElementsByClassName(cssName1);//一级菜单父容器的数繿
var ArrLevel = new Array();//第一级菜单的数组
for(var i=0;i<ArrLinks.length;i++){
var curobj= getFirstChild(ArrLinks[i]);//获得第一个子对象
ArrLevel.push(curobj);
}
var ArrDivs=getElementsByClassName(cssName2);//二级菜单的父容器数组,要显示的二级菜单容嗿
for(var i=0;i<ArrLinks.length;i++){
var obj=getFirstChild(ArrLinks[i]);//获得第一个子对象
obj.index=i
obj.onmouseover= function(){overme(this,ArrLevel,style2,temp)};
obj.onmouseout=function(){outme(this,ArrLevel,style2,temp)};
obj.onclick=function(){clickme(this,ArrLinks,ArrDivs,style2,style3,temp)};
obj.onfocus=function(){this.blur()};//去掉虚线柿
}
}
//二级菜单绑定事件
function submenu(cssName2,style2,style3){
var ArrLinks=getElementsByClassName(cssName2);//一级菜单父容器的数繿
var ArrLevel = new Array();//第一级菜单的数组
for(var i=0;i<ArrLinks.length;i++){
var sublinks= ArrLinks[i].getElementsByTagName('A');//获得第一个子对象
for(var m=0;m<sublinks.length;m++){
ArrLevel.push(sublinks[m]);
}
}
for(var i=0;i<ArrLevel.length;i++){
var obj=ArrLevel[i];
obj.index=i
obj.onmouseover= function(){overme(this,ArrLevel,style2,temp1)};
obj.onmouseout=function(){outme(this,ArrLevel,style2,temp1)};
obj.onclick=function(){subclick(this,ArrLevel,style2,style3,temp1)};
obj.onfocus=function(){this.blur()};//去掉虚线柿
}
}
function overme(o,links,style2,state){
if (state!=o.index){
addClass(o,style2);
}
}
function outme(o,links,style2,state){
if (state!=o.index){
removeClass(o,style2);
};
}
//一级菜单点击事乿
function clickme(o,links,divs,style2,style3,state){
//要判断是否有子菜单项
var objUl=links[o.index].getElementsByTagName('UL');
var subNum=objUl.length;//是否有二级菜单,0为无,大丿为有;
if (state!=o.index){
for(var i=0;i<divs.length;i++){
if(subNum>0){//如果存在二级菜单项,即隐藏它
divs[i].style.display="none";
//closeObj(divs[i]);
}
}
if(subNum>0){//如果存在二级菜单项,显示当前点击的二级菜勿
objUl[0].style.display="block";
showObj(objUl[0]);
}
temp=o.index;
}else{
if(objUl[0].style.display=="block")
objUl[0].style.display="none"
else
objUl[0].style.display="block"
}
for(var i=0;i<links.length;i++){
var curobj= getFirstChild(links[i]);//获得第一个子对象
removeClass(curobj,style3);
removeClass(curobj,style2);
}
addClass(o,style3);
}
//二级菜单点击事件
function subclick(o,links,style2,style3,state){
if (state!=o.index){
for(var i=0;i<links.length;i++){
removeClass(links[i],style2);
}
temp1=o.index;
addClass(o,style2);
}
}//缓冲显示
var flag=0;
function showObj(obj){
var allhight;
allhight=obj.getElementsByTagName("li").length*26;//26为每个菜单项的高度,用来计算二级菜单的总高度⾿
obj.style.height="1px";
var changeW=function(){
var obj_h=parseInt(obj.style.height);
if(obj_h<=allhight){
obj.style.height=(obj_h+Math.ceil((allhight-obj_h)/10))+"px";
}
else{
clearInterval(bw1);
}
}
bw1= setInterval(changeW,20);//时间开僿
if(flag>0){
clearInterval(bw2);
}
}
//缓冲关闭
function closeObj(obj){
flag++;
var closeDiv=function(){
clearInterval(bw1);
var obj_h=parseInt(obj.style.height);
if(obj_h>1){
obj.style.height=(obj_h-Math.ceil(obj_h)/100)+"px";
}
else{
clearInterval(bw2);
obj.style.display="none";
}
}
bw2= setInterval(closeDiv,1);
//alert(flag)
}left.htm 中的JS修改function openP(_id)
{
var select_id = parseInt(_id.replace("box",""));
if(document.getElementById(_id).style.display=="block")
document.getElementById(_id).style.display="none";
else
document.getElementById(_id).style.display="block";
for (i=1;i<=3;i++)
{
if(i!=select_id)
document.getElementById("box"+i).style.display = "none";
}
}
http://www.111cn.net/js_a/76/984a3a2f920f28ee2cf62225db180a7a.htm#
if(document.getElementsByClassName){return document.getElementsByClassName(searchClass)}
else{
node = node || document;
tag = tag || "*";
var classes = searchClass.split(" "),
elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag),
patterns = [],
returnElements = [],
current,
match;
var i = classes.length;
while(--i >= 0){patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));}
var j = elements.length;
while(--j >= 0){
current = elements[j];
match = false;
for(var k=0, kl=patterns.length; k<kl; k++){
match = patterns[k].test(current.className);
if (!match) break;
}
if (match) returnElements.push(current);
}
return returnElements;
}
}/*通用加载函数,页面中如果要用到onload函数在窗体一加载时就执行的代码,可以直接添加到这个函数,否则会引起多个onload函数的执行冲稿
带参数的调用方法:addLoadEvent(new Function("refurFrame('单词管理');"));
*/
function addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!='function'){
window.onload=func;
}
else{
window.onload=function(){
oldonload();
func();
}
}
}/*判断是否有className的函数,调用例子为:o.className=o.addClass(o,"normal");*/
function hasClass(element, className) {
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
return element.className.match(reg);
}
/*动态添加className的函数,调用例子为:addClass(document.getElementById("test"), "test");*/
function addClass(element, className) {
if (!this.hasClass(element, className)){
element.className += " "+className;/*如果有多个样式叠加,则用这种方式,如class="style1 style2"*/
/*element.className = className; */
}
}
/*动态删除className的函数,调用例子为:removeClass(document.getElementById("test"), "test") */
function removeClass(element, className) {
if (hasClass(element, className)){
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
element.className = element.className.replace(reg,' ');
}
}
/*获取第一个子节点的函数,兼容FF*/
function getFirstChild(obj){
var firstDIV;
for (i=0; i<obj.childNodes.length; i++){
if (obj.childNodes[i].nodeType==1){
firstDIV=obj.childNodes[i];
return firstDIV;
}
else
continue;
}
}addLoadEvent(new Function("hovermenu('level1','level2','hove','cur');"));
//menu代表菜单总的ID名称
//level1代表一级菜单项的父容器,level2代表二级菜单项的父容器,
//后面的三个参数style1,style2,style3分别代表鼠标移入,移出,点击的三态样式名
addLoadEvent(new Function("submenu('level2','hove1','hove1');"));/*滑动显隐菜单列表*/
var temp;
var temp1;
function hovermenu(cssName1,cssName2,style2,style3){
var ArrLinks=getElementsByClassName(cssName1);//一级菜单父容器的数繿
var ArrLevel = new Array();//第一级菜单的数组
for(var i=0;i<ArrLinks.length;i++){
var curobj= getFirstChild(ArrLinks[i]);//获得第一个子对象
ArrLevel.push(curobj);
}
var ArrDivs=getElementsByClassName(cssName2);//二级菜单的父容器数组,要显示的二级菜单容嗿
for(var i=0;i<ArrLinks.length;i++){
var obj=getFirstChild(ArrLinks[i]);//获得第一个子对象
obj.index=i
obj.onmouseover= function(){overme(this,ArrLevel,style2,temp)};
obj.onmouseout=function(){outme(this,ArrLevel,style2,temp)};
obj.onclick=function(){clickme(this,ArrLinks,ArrDivs,style2,style3,temp)};
obj.onfocus=function(){this.blur()};//去掉虚线柿
}
}
//二级菜单绑定事件
function submenu(cssName2,style2,style3){
var ArrLinks=getElementsByClassName(cssName2);//一级菜单父容器的数繿
var ArrLevel = new Array();//第一级菜单的数组
for(var i=0;i<ArrLinks.length;i++){
var sublinks= ArrLinks[i].getElementsByTagName('A');//获得第一个子对象
for(var m=0;m<sublinks.length;m++){
ArrLevel.push(sublinks[m]);
}
}
for(var i=0;i<ArrLevel.length;i++){
var obj=ArrLevel[i];
obj.index=i
obj.onmouseover= function(){overme(this,ArrLevel,style2,temp1)};
obj.onmouseout=function(){outme(this,ArrLevel,style2,temp1)};
obj.onclick=function(){subclick(this,ArrLevel,style2,style3,temp1)};
obj.onfocus=function(){this.blur()};//去掉虚线柿
}
}
function overme(o,links,style2,state){
if (state!=o.index){
addClass(o,style2);
}
}
function outme(o,links,style2,state){
if (state!=o.index){
removeClass(o,style2);
};
}
//一级菜单点击事乿
function clickme(o,links,divs,style2,style3,state){
//要判断是否有子菜单项
var objUl=links[o.index].getElementsByTagName('UL');
var subNum=objUl.length;//是否有二级菜单,0为无,大丿为有;
if (state!=o.index){
for(var i=0;i<divs.length;i++){
if(subNum>0){//如果存在二级菜单项,即隐藏它
divs[i].style.display="none";
//closeObj(divs[i]);
}
}
if(subNum>0){//如果存在二级菜单项,显示当前点击的二级菜勿
objUl[0].style.display="block";
showObj(objUl[0]);
}
temp=o.index;
}else{
if(objUl[0].style.display=="block")
objUl[0].style.display="none"
else
objUl[0].style.display="block"
}
for(var i=0;i<links.length;i++){
var curobj= getFirstChild(links[i]);//获得第一个子对象
removeClass(curobj,style3);
removeClass(curobj,style2);
}
addClass(o,style3);
}
//二级菜单点击事件
function subclick(o,links,style2,style3,state){
if (state!=o.index){
for(var i=0;i<links.length;i++){
removeClass(links[i],style2);
}
temp1=o.index;
addClass(o,style2);
}
}//缓冲显示
var flag=0;
function showObj(obj){
var allhight;
allhight=obj.clientHeight;//obj.getElementsByTagName("li").length*26;//26为每个菜单项的高度,用来计算二级菜单的总高度⾿
obj.style.height="1px";
var changeW=function(){
var obj_h=parseInt(obj.style.height);
if(obj_h<=allhight){
obj.style.height=(obj_h+Math.ceil((allhight-obj_h)/10))+1+"px";
}
else{
clearInterval(bw1);
}
}
// bw1= setInterval(changeW,20);//时间开僿
if(flag>0){
clearInterval(bw2);
}
}
//缓冲关闭
function closeObj(obj){
flag++;
var closeDiv=function(){
clearInterval(bw1);
var obj_h=parseInt(obj.style.height);
if(obj_h>1){
obj.style.height=(obj_h-Math.ceil(obj_h)/100)+"px";
}
else{
clearInterval(bw2);
obj.style.display="none";
}
}
bw2= setInterval(closeDiv,1);
//alert(flag)
}
left.htmfunction openP(_id)
{
var select_id = parseInt(_id.replace("box",""));
if(document.getElementById(_id).style.display=="block"){
document.getElementById(_id).style.display="none";
updateParentHeight(document.getElementById(_id));
}else{
document.getElementById(_id).style.display="block";
updateParentHeight(document.getElementById(_id));
}
for (i=1;i<=3;i++)
{
if(i!=select_id)
document.getElementById("box"+i).style.display = "none";
}
}
function updateParentHeight(obj){
var p = obj.parentElement ;
while(p&&p.tagName.toLowerCase()!="ul"){
p = p.parentElement;
}
if(p&&p.tagName.toLowerCase()=="ul"){
p.style.height=obj.parentElement.clientHeight+"px";
}
}
var index = 3;
function showDetail(p){$("#userInfo p").click(
function(){
for(var i=0; i<index; i++){
$("#userInfo index").removeClass('acss a');
$(this).removeClass('acss a').addClass('acss a');
}
}
);}
怎样才能把javascript的var变量,放到id属性中????急急急