谁帮我注释一下代码啊,看不明白!!

knife_yu 2009-04-28 12:01:17
这是一段广告代码,效果就是慢慢展开,一会后再慢慢收缩的样子

有些地方看不懂,希望JS高手给注释一下

疑问:完全展开后,广告展示时间的长短,是哪里控制的?

JS里 || 不是判断两个表达式的真假么?这里用什么意思?返回什么值了?


var intervalId = null;

function slideAd(id,nStayTime,sState,nMaxHth,nMinHth)
{
this.stayTime=nStayTime*500 || 100;
this.maxHeigth=nMaxHth || 490;
this.minHeigth=nMinHth || 1;
this.state=sState || "down" ;
var obj = document.getElementById(id);
if(intervalId != null)window.clearInterval(intervalId);

function openBox()
{
var h = obj.offsetHeight;
obj.style.height = ((this.state == "down") ? (h + 10) : (h - 10))+"px";
if(obj.offsetHeight>this.maxHeigth)
{
window.clearInterval(intervalId);
intervalId=window.setInterval(closeBox,this.stayTime);
}

if (obj.offsetHeight<this.minHeigth)
{
window.clearInterval(intervalId);
obj.style.display="none";
}
}

function closeBox()//
{
slideAd(id,this.stayTime,"up",nMaxHth,nMinHth);
}

intervalId = window.setInterval(openBox,10);
}
...全文
132 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunxing007 2009-04-28
  • 打赏
  • 举报
回复
再给你解释一下,
this.maxHeigth=nMaxHth || 490;//整个广告的最大高度
如果再上下文中可以找到nMaxHth,并且nMaxHth!=false,nMaxHth!=null, nMaxHth!=0, 则:
表达式nMaxHth || 490 就可以取左边的值,否则取右边的值。

archko 2009-04-28
  • 打赏
  • 举报
回复
解释的相当漂亮
sunxing007 2009-04-28
  • 打赏
  • 举报
回复
我来帮你:

<html>
<head>
<title>Test</title>
<style type="text/css">
body{
margin: 0px;
padding: 0px;
}
</style>

</head>
<body onload="">
<div id="pic" style="height: 200px; width:300px; border: solid red 1px;overflow: hidden">
<!--img src="http://avatar.profile.csdn.net/2/5/E/2_sunxing007.jpg" /-->
</div>
</body>
<script>
var intervalId = null;//定时器

function slideAd(id,nStayTime,sState,nMaxHth,nMinHth)
{
this.stayTime=nStayTime*500 || 100;//如果参数中有nStayTime,则stayTime = (stayTime乘以500), 否则取值为stayTime=100。
this.maxHeigth=nMaxHth || 490;//整个广告的最大高度
this.minHeigth=nMinHth || 1;//;//整个广告的最xiao高度
this.state=sState || "down" ;//方向
var obj = document.getElementById(id);//展示广告的容器,我用的是上面的div (id=pic),
if(intervalId != null)window.clearInterval(intervalId);//如果正在运行,则中指定时器

function openBox()
{
var h = obj.offsetHeight;//容器的高度
obj.style.height = ((this.state == "down") ? (h + 10) : (h - 10));//如果方向朝下,则每次高度+10,否则-10
if(obj.offsetHeight>this.maxHeigth)//如果大于最大高度了,则开始变小
{
window.clearInterval(intervalId);
intervalId=window.setInterval(closeBox,this.stayTime);
}

if (obj.offsetHeight<this.minHeigth)
{
window.clearInterval(intervalId);
obj.style.display="none";
}
}

function closeBox()//
{
slideAd(id,this.stayTime,"up",nMaxHth,nMinHth);
}

intervalId = window.setInterval(openBox,10);
}
slideAd('pic');//开始调用
// slideAd('pic', 2,'down',500, 100);//也可以这样调用
</script>
</html>
xiaojing7 2009-04-28
  • 打赏
  • 举报
回复

//声明变量
var intervalId = null;
//定义方法
function slideAd(id,nStayTime,sState,nMaxHth,nMinHth)
{
this.stayTime=nStayTime*500 || 100;
this.maxHeigth=nMaxHth || 490;
this.minHeigth=nMinHth || 1;
this.state=sState || "down" ;
var obj = document.getElementById(id);
//如果不为null 则删除setInterval 产生的对象
if(intervalId != null)window.clearInterval(intervalId);

function openBox()
{
var h = obj.offsetHeight;
obj.style.height = ((this.state == "down") ? (h + 10) : (h - 10))+"px";
if(obj.offsetHeight>this.maxHeigth)
{
window.clearInterval(intervalId);
//调用closeBox方法
intervalId=window.setInterval(closeBox,this.stayTime);
}

if (obj.offsetHeight<this.minHeigth)
{
window.clearInterval(intervalId);
obj.style.display="none";
}
}

function closeBox()//
{
slideAd(id,this.stayTime,"up",nMaxHth,nMinHth);
}
//每隔10毫秒调用下openBox方法
intervalId = window.setInterval(openBox,10);
}

natineprince 2009-04-28
  • 打赏
  • 举报
回复
this.stayTime=nStayTime*500 || 100;
这里控制时间.
璇之星 2009-04-28
  • 打赏
  • 举报
回复
你有不把下面得代码贴出来,至少可以运行起来。转意下脑子。想知道什么意思,可以用alert()打印对应的值,结合实际效果不就明白了。呵呵
natineprince 2009-04-28
  • 打赏
  • 举报
回复
或(||) expr1 || expr2 如果 expr1 为真则返回之,否则返回 expr2。
knife_yu 2009-04-28
  • 打赏
  • 举报
回复
knife_yu 2009-04-28
  • 打赏
  • 举报
回复


没人帮我注释啊!晕

87,916

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧