日期:2014-05-16  浏览次数:20388 次

Jquery作者John Resig自己封装的javascript 常用函数
//获取元素的样式值。
function getStyle(elem,name){
     if(elem.style[name]){
         return elem.style[name];
     }else if(elem.currentStyle){
         return elem.currentStyle[name];
     }else if(document.defaultView&&document.defaultView.getComputedStyle){
         name=name.replace(/([A-Z])/g,"-$1");
         name=name.toLowerCase();
         var s=document.defaultView.getComputedStyle(elem,"");
         return s&&s.getPropertyValue(name);
     }else{
         return null
     }
}
//获取元素相对于这个页面的x和y坐标。   
function pageX(elem){
     return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft;
}
function pageY(elem){
     return elem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop;
}
//获取元素相对于父元素的x和y坐标。       
function parentX(elem){
     return elem.parentNode==elem.offsetParent?elem.offsetLeft:pageX(elem)-pageX(elem.parentNode);
}
function parentY(elem){
     return elem.parentNode==elem.offsetParent?elem.offsetTop:pageY(elem)-pageY(elem.parentNode);
}
//获取使用css定位的元素的x和y坐标。
function posX(elem){
     return parseInt(getStyle(elem,"left"));
}   
function posY(elem){
     return parseInt(getStyle(elem,"top"));
}
//设置元素位置。   
function setX(elem,pos){
     elem.style.left=pos+"px";
}   
function setY(elem,pos){
     elem.style.top=pos+"px";
}
//增加元素X和y坐标。   
function addX(elem,pos){
     set(elem,(posX(elem)+pos));
}
function addY(elem,pos){
     set(elem,(posY(elem)+pos));
}
//获取元素使用css控制大小的高度和宽度   
function getHeight(elem){
     return parseInt(getStyle(elem,"height"));
}
function getWidth(elem){
     return parseInt(getStyle(elem,"width"));
}
//获取元素可能,完整的高度和宽度
function getFullHeight(elem){
     if(getStyle(elem,"display")!="none"){
         return getHeight(elem)||elem.offsetHeight;
     }else{
         var old=resetCss(elem,{display:"block",visibility:"hidden",position:"absolute"});
         var h=elem.clientHeight||getHeight(elem);
         restoreCss(elem,old);
         return h;
     }
}
function getFullWidth(elem){
     if(getStyle(elem,"display")!="none"){
         return getWidth(elem)||elem.offsetWidth;
     }else{
         var old=resetCss(elem,{display:"block",visibility:"hidden",position:"absolute"});
         var w=elem.clientWidth||getWidth(elem);
         restoreCss(elem,old);
         return w;
     }
}
//设置css,并保存旧的css
function resetCss(elem,prop){
     var old={};
     for(var i in prop){
         old[i]=elem.style[i];
         elem.style[i]=prop[i];
     }
     return old;
}
function restoreCss(elem,prop){
     for(var i in prop){
         elem.style[i]=prop[i];
     }
}
//显示和隐藏
function show(elem){
  elem.style.display=elem.$oldDisplay||"";
}
function hide(elem){
  var curDisplay=getStyle(elem,"display");
  if(curDisplay!="none"){
    elem.$oldDisplay=curDisplay;
    elem.style.display="none";
  }
}
//设置透明度 setOpacity(elem,40)
function setOpacity(elem,num){
  if(elem.filters){
    elem.style.filter="alpha(opacity="+num+")";
  }else{
    elem.style.opacity=num/100;
  }
}
//滑动
function slideDown(elem){
     var h=getFullHeight(elem);
     elem.style.height="0px";
     show(elem);
     for(var i=0;i<=100;i+=5){
         new function(){
             var pos=i;
             setTimeout(function(){elem.style.height=(pos/100*h)+"px";},(pos*10));
         }
     }
}
//渐变
function fadeIn(elem){   
         show(elem);
         setOpacity(elem,0);
     for(var i=0;i<=100;i+=5){
         new function(){
                   var pos=i;
                   setTimeout(function(){setOpacity(elem,pos);},(pos+1)*10);
                   }
         }
     }
//获取鼠标光标相对于整个页面的位置。   
function getX(e){
     e=e||window.event;
     return e.pageX||e.clientX+document.body.scrollLeft;
     }
function getY(e){
     e=e||window.event;
     return e.pageY||e.clientY+document.body.scrollTop;
     }
//获取鼠标光标相对于当前元素的位置。
function getElementX(e){
     return (e&&e.layerX)||window.event.offsetX;
     }