关于收缩展开菜单的JS问题,请进! 本帖最后由 nickwang888 于 2009-12-10 01:50:51 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.把var maxh=30;作为全局变量2.两个函数修改如下这样做的目的,每次将展开后的ul的高度最大值记录下来!等隐藏之后,再次展开时,就能进行比对了。定死了最大值,但是高度是实时变化的,所以要不断的更新最大值!function $D1(obj){ var h=obj.offsetHeight; //var maxh=30; function dmove(){ h+=20; //设置层展开的速度 if(h>=maxh){ obj.style.height=maxh+'px'; clearInterval(iIntervalId); }else{ obj.style.display='block'; obj.style.height=h+'px'; } } iIntervalId=setInterval(dmove,2); } function $D2(obj){ var h=obj.offsetHeight; if(h>maxh) { maxh=h; } //var maxh=30; function dmove(){ h-=20;//设置层收缩的速度 if(h <=0){ obj.style.display='none'; clearInterval(iIntervalId); }else{ obj.style.display='block'; obj.style.height=h+'px'; } } iIntervalId=setInterval(dmove,2); } 楼主用这段代码function $(element){ return element = document.getElementById(element); } 怎么不直接用JQuery好了 楼主,我能先请教你个问题吗?我调试了下,var sb=event.srcElement.parentNode;这个的outterhtml是<div id="bt" onclick="$use('contents')">而event.srcElement的outterhtml是<img> 那个层,为什么呢,onclick事件明明是在<div>上的,怎么event.srcElement的outterhtml却是<img> 还有楼主的这个高度问题,其实可以屏蔽掉,因为楼主只想达到菜单框滑下来的目的,对巴,直接用JQuery的$('div').show(fast)就可以了 直接用JQuery我对JS不熟悉。。能将代码直接粘贴进来看看效果吗谢谢啦结贴马上给分呵呵 <script type="text/javascript" src="e:\jquery-1.3.1.js"></script><script type="text/javascript"> $(function(){ $("#aatitle").toggle(function(){ $("#contents").hide("normal"); },function(){ $("#contents").show("normal"); }); })</script> 晕,这里就是全部的代码,html不需要大的改动,你只要把jquery文件放在相关的目录,我这里是放在e:/然后加上上面的代码就可以了, jqzoom图片放大镜效果在IE7.0下放大镜不透明 tumblr的iphone版web页面的实现用的是什么技术? 帮忙处理一个简单的字符串 如何获得子窗口的子窗口 请问这问题,用javascript怎么写好? 有没有intellij idea的jquery自动提示插件 如何实现框架之间的打印? 但是第一个文本框无法修改? HTML5出来了,原来的JS书还可以看吗? 请教一个htm5l filesystem 创建文件问题 求救高手! js右键启动收藏夹
2.两个函数修改如下这样做的目的,每次将展开后的ul的高度最大值记录下来!等隐藏之后,再次展开时,就能进行比对了。定死了最大值,但是高度是实时变化的,所以要不断的更新最大值!function $D1(obj){
var h=obj.offsetHeight;
//var maxh=30;
function dmove(){
h+=20; //设置层展开的速度
if(h>=maxh){
obj.style.height=maxh+'px';
clearInterval(iIntervalId);
}else{
obj.style.display='block';
obj.style.height=h+'px';
}
}
iIntervalId=setInterval(dmove,2);
} function $D2(obj){
var h=obj.offsetHeight;
if(h>maxh)
{
maxh=h;
}
//var maxh=30;
function dmove(){
h-=20;//设置层收缩的速度
if(h <=0){
obj.style.display='none';
clearInterval(iIntervalId);
}else{
obj.style.display='block';
obj.style.height=h+'px';
}
}
iIntervalId=setInterval(dmove,2);
}
return element = document.getElementById(element);
}
怎么不直接用JQuery好了
我调试了下,var sb=event.srcElement.parentNode;这个的outterhtml是
<div id="bt" onclick="$use('contents')">
而event.srcElement的outterhtml是<img> 那个层,为什么呢,onclick事件明明是在<div>上的,怎么event.srcElement的outterhtml却是<img>
我对JS不熟悉。。
能将代码直接粘贴进来看看效果吗
谢谢啦
结贴马上给分
呵呵
<script type="text/javascript" src="e:\jquery-1.3.1.js"></script>
<script type="text/javascript">
$(function(){
$("#aatitle").toggle(function(){
$("#contents").hide("normal");
},function(){
$("#contents").show("normal");
});
})
</script>
然后加上上面的代码就可以了,