首页 新闻 会员 周边 捐助

关于js的一些写法

1
悬赏园豆:30 [已解决问题] 解决于 2012-10-10 14:43

//下面是一段程序代码,里面有些内容被我删除了,这直觉得会直观点,我只是对里面的东西写法不太理解望各位大神指点小弟感激不尽

//凝点我下到代码后面的注解去了

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(){}

严文Live的主页 严文Live | 初学一级 | 园豆:11
提问于:2012-10-10 11:56
< >
分享
最佳答案
0

1、scroll和resize都是DOM事件,前者是滚动时触发,后者是改变浏览器窗口大小时触发

2、startMove是下面定义的函数

3、fnCallBackEnd这里传的是函数名,这里用fnCallBackEnd()是调用这个函数

4、(XXX)()这种是让前面括号中的XXX自动运行

收获园豆:30
artwl | 专家六级 |园豆:16736 | 2012-10-10 12:51

fnCallBackEnd这个是函数里的参数吧,没有看到哪里是函数啊

严文Live | 园豆:11 (初学一级) | 2012-10-10 14:17

@严文Live: 

调用的时候:function (){oBtnMin.className=oBtnMin.className=='min'?'max':'min';}这个就是啊

artwl | 园豆:16736 (专家六级) | 2012-10-10 14:21

噢我看到函数了谢谢

严文Live | 园豆:11 (初学一级) | 2012-10-10 14:43

@artwl: 还有点一点点不理解像这个写法为什么要重复写多个oBtnMin.className呢

oBtnMin.className=oBtnMin.className=='min'?'max':'min';

严文Live | 园豆:11 (初学一级) | 2012-10-10 14:50

@严文Live: 加个括号你就能看明白了

oBtnMin.className=(oBtnMin.className=='min'?'max':'min');

artwl | 园豆:16736 (专家六级) | 2012-10-10 14:51

@artwl: 是?:的用法

artwl | 园豆:16736 (专家六级) | 2012-10-10 14:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册