//下面是一段程序代码,里面有些内容被我删除了,这直觉得会直观点,我只是对里面的东西写法不太理解望各位大神指点小弟感激不尽
//凝点我下到代码后面的注解去了
function miaovAddEvent(sEventName, fnHandler){
if(window.attachEvent){
window.attachEvent('on'+sEventName, fnHandler);
}else{
window.addEventListener(sEventName, fnHandler, false);
}
}
window.onload = function(){
if(isIE6){
oDiv.style.position='absolute';
repositionAbsolute();
miaovAddEvent('scroll', repositionAbsolute);
miaovAddEvent('resize', repositionAbsolute);
//1.这个事件监听里的scroll和resize是什么意思,一般不是写onclick、onmouseout、onmouseover之类的
}else{
oDiv.style.position='fixed';
repositionFixed();
miaovAddEvent('resize', repositionFixed);
}
oBtnMin.timer=null;
oBtnMin.isMax=true;
oBtnMin.onclick=function (){
startMove(
oDivContent, (this.isMax=!this.isMax)?iMaxHeight:0,
function (){oBtnMin.className=oBtnMin.className=='min'?'max':'min';}
);
//2.这是一种什么写法startMove(参数,参数,参数);
};
oBtnClose.onclick=function (){oDiv.style.display='none';};
};
function startMove(obj, iTarget, fnCallBackEnd){
if(obj.timer){clearInterval(obj.timer);}
obj.timer=setInterval(
function (){
doMove(obj, iTarget, fnCallBackEnd);
},30
);
}
function doMove(obj, iTarget, fnCallBackEnd){
var iSpeed=(iTarget-obj.offsetHeight)/8;
if(obj.offsetHeight==iTarget){
clearInterval(obj.timer);
obj.timer=null;
if(fnCallBackEnd){
fnCallBackEnd();//3.这个fnCallBackEnd只是个参数来的怎么能当函数用
}
}else{
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
obj.style.height=obj.offsetHeight+iSpeed+'px';
((window.navigator.userAgent.match(/MSIE 6/ig) && window.navigator.userAgent.match(/MSIE 6/ig).length==2)?repositionAbsolute:repositionFixed)()
//4.这又是一种什么写法(代码)()
}
}
function repositionAbsolute(){ }
function repositionFixed(){}
1、scroll和resize都是DOM事件,前者是滚动时触发,后者是改变浏览器窗口大小时触发
2、startMove是下面定义的函数
3、fnCallBackEnd这里传的是函数名,这里用fnCallBackEnd()是调用这个函数
4、(XXX)()这种是让前面括号中的XXX自动运行
fnCallBackEnd这个是函数里的参数吧,没有看到哪里是函数啊
@严文Live:
调用的时候:function (){oBtnMin.className=oBtnMin.className=='min'?'max':'min';}这个就是啊
噢我看到函数了谢谢
@artwl: 还有点一点点不理解像这个写法为什么要重复写多个oBtnMin.className呢
oBtnMin.className=oBtnMin.className=='min'?'max':'min';
@严文Live: 加个括号你就能看明白了
oBtnMin.className=(oBtnMin.className=='min'?'max':'min');
@artwl: 是?:的用法