2012年的js,封装了好多实战方法

这是2012年开发的网站 , 为自己做个笔记。里面当时封装了好多方法

http://www.cphi.cn/file/script/Yun.js

/*
* author 刘俊斌 2012年11月9日 15:13:15
* var target=ev.target||ev.srcElement; //目标元素
* if(target.nodeName.toLowerCae()=='li')  //控制范围
*/
var Yun_MOVE_TYPE = {BUFFER:1,FLEX:2,TIME:3}
function getById(str){return document.getElementById(str);}//        获取id节点的封装
function getByTag(oParent,aTag)    {return oParent.getElementsByTagName(aTag);};
function getByClass(oParent,sClass)      //获取class节点的封装
{
var aResault = [];
var aAry = oParent.getElementsByTagName('*');
var re = new RegExp('\\b'+sClass+'\\b','g');
for(var i=0;i<aAry.length;i++)
{
if(re.test(aAry[i].className)){aResault.push(aAry[i]);}
}
return aResault;
}
function addEvent(obj,sEv,fn) // 添加事件函数
{
if(obj.attachEvent){obj.attachEvent('on'+sEv,function()        {fn.call(obj)});}else{obj.addEventListener(sEv,fn,false);}
    }
function getStyle(obj,attr) //获取非行间样式
{
if(obj.currentStyle){return obj.currentStyle[attr];}
    else{return document.defaultView.getComputedStyle(obj,false)    [attr];}
}
function css(obj,attr,value) //获取和设置非行间样式
{
if(arguments.length==2)    {return parseFloat(getStyle(obj,attr));}
else if(arguments.length==3)
    {
if((attr=='width'||attr=='height')&&parseFloat(value)<0)    {value = undefined;}
switch(attr)
{
    case 'width': case 'height': case 'paddingTop': case 'paddingLeft'  : case 'paddingRight': case 'paddingBottom':
value = Math.max(value,0);
    case 'left': case 'top': case 'marginLeft': case 'marginTop': case '    marginRight': case 'marginBottom':
obj.style[attr] = value+'px';  break;
case 'opacity': obj.style.filter = 'alpha(opacity='+    (value*100)+')'; obj.style.opacity = value; break;
default:
obj.style[attr]=value;
}
return css;
}
}

function startMove(obj,json,fn) //缓冲运动第一套 -- 属性
{
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var bStop = true;
for(var attr in json)
{
var iCur=0;
if(attr=='opacity')
{iCur=Math.round(parseFloat(getStyle(obj,attr))*100);}else{iCur = parseInt(getStyle(obj,attr));}
var iSpeed = (json[attr]-iCur)/8;var iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
if(iCur!=json[attr]){bStop = false;}
if(attr=='opacity'){obj.style.filter = 'alpha(opacity:'+(iCur+iSpeed)+')';obj.style.opacity = (iCur+iSpeed)/100;}
else{obj.style[attr] = iCur+iSpeed+'px';}
}
if(bStop){clearInterval(obj.timer);if(fn){fn();}}
},30)
}
function startmove(obj, json, iTime, fn) { //缓冲运动第二套 -- 时间
var iInterval = 30;
var iTimes = Math.ceil(iTime / iInterval);
var oSpeed = {};
var iEnd = (new Date()).getTime() + iTime;
for (var attr in json) oSpeed[attr] = (json[attr] - css(obj, attr)) / iTimes;
if (obj.timer) clearInterval(obj.timer);
obj.timer = setInterval(function() {
doMove(obj, json, oSpeed, iEnd, fn);
},
30);
}
function doMove(obj, json, oSpeed, iEnd, fn) {
var iNow = (new Date()).getTime();
var attr = '';
if (iNow >= iEnd) {
clearInterval(obj.timer);
obj.timer = null;
for (attr in json) css(obj, attr, json[attr]);
if (fn) fn(obj, json);
} else for (attr in json) if (oSpeed[attr]) css(obj, attr, css(obj, attr) + oSpeed[attr]);
}
function startMove_FLEX(obj,json,fn) //弹性运动
{
clearInterval(obj.timer);
obj.timer = setInterval(function()
{
var bStop=true;
var speed=0;
var cur=0;
for(var attr in json)
{
if(!obj.oSpeed)obj.oSpeed={};
if(!obj.oSpeed[attr])obj.oSpeed[attr]=0;
cur=css(obj, attr);
if(Math.abs(json[attr]-cur)>1 || Math.abs(obj.oSpeed[attr])>1)
{
bStop=false;

obj.oSpeed[attr]+=(json[attr]-cur)/5;
obj.oSpeed[attr]*=0.7;
var maxSpeed=65;
if(Math.abs(obj.oSpeed[attr])>maxSpeed)
{
obj.oSpeed[attr]=obj.oSpeed[attr]>0?maxSpeed:-maxSpeed;
}

css(obj, attr, cur+obj.oSpeed[attr]);
}
}

if(bStop)
{
clearInterval(obj.timer);
obj.timer=null;
if(fn)fn.call(obj);
}
},30)
}
function YunStartMove(obj,json,iType,fn) //混合运动
{
var fnMove = null;
switch(iType)
{
case Yun_MOVE_TYPE.BUFFER :
fnMove = startMove(obj,json,fn);
break;
case Yun_MOVE_TYPE.FLEX:
fnMove = startMove_FLEX(obj,json,fn);
break;

}
}
function createTag(url) //动态创建Tag
{
var oUrl = url.split('.');
var file = oUrl[oUrl.length-1];
if(file=='css')
{
var obj = document.createElement('link'),lik='href',tpe='text/css';
obj.setAttribute('rel','stylesheet');
}else
{
var obj = document.createElement('script'),lik='src',tpe='text/javascript';
}
obj.setAttribute(lik,url);obj.setAttribute('type',tpe);
file=='css' ? document.getElementsByTagName('head')[0].appendChild(obj):document.body.appendChild(obj);
return obj;
}
/------------------漂浮窗口-----------------------/
function floatDiv(divId,imgUrl,aHref,iSpeedX,iSpeedY)
{
var timer = null;
var iSpeedX = iSpeedX;
var iSpeedY = iSpeedY;
if(!iSpeedX){iSpeedX=2;}
if(!iSpeedY){iSpeedY=1;}
var oBj = document.createElement('div');
oBj.id = divId;
with(oBj.style)
{
zIndex = 9999999;
position = 'absolute';
overflow = 'hidden';
}
var oA = document.createElement('a');
oA.href = aHref;
var oCloseBox = document.createElement('a');
with(oCloseBox.style)
{
zIndex = 101;
width = '30px';
height = '20px';
position = 'absolute';
display = 'block';
right = '0px';
top = '0px';
cursor = 'pointer';
backgroundColor = 'red'
}
oCloseBox.onclick = hide;
var oImg = new Image();
oImg.src= imgUrl;
oImg.style.border = '0';
oA.appendChild(oImg)
oBj.appendChild(oA);
oBj.appendChild(oCloseBox);
document.body.appendChild(oBj);
oBj.onmousemove = floatStopMove;
oBj.onmouseout = move
function hide()
{
floatStopMove();
oBj.style.display = 'none';
}
function floatStopMove()
{
clearInterval(timer)
}
function move()
{
timer = setInterval(function()
{
var l = oBj.offsetLeft;
var t = oBj.offsetTop;
var w = document.documentElement.clientWidth-oBj.offsetWidth;
var h = document.documentElement.clientHeight-oBj.offsetHeight;
oBj.style.left = (l+iSpeedX) +'px';
oBj.style.top = (t+iSpeedY)+'px';
if(parseInt(oBj.style.left)>=w)
{
iSpeedX=-1;
oBj.style.left = w+'px'
}
else if(parseInt(oBj.style.left)<=0)
{
iSpeedX
=-1;
oBj.style.left = '0';
}
else if(parseInt(oBj.style.top)>=h)
{
iSpeedY=-1;
oBj.style.top = h+'px';
}
else if(parseInt(oBj.style.top)<=0)
{
iSpeedY
=-1;
oBj.style.top = 0;
}
},30)
}
move();
}
/--------------------------幻灯片-------------------------------/
function flashPic(divId,Min_url,Min_url_on,Min_width,Min_height)
{
var timer = null;
var iNow = 0;
var obj = document.getElementById(divId);
var aLi = obj.getElementsByTagName('ul')[0].getElementsByTagName('li');
var smallUl = document.createElement('ul');
if(!Min_url){Min_url='red'}
if(!Min_url_on){Min_url_on='green'}
if(!Min_width){Min_width=14}
if(!Min_height){Min_height=11}
for(var i=0;i<aLi.length;i++)
{
aLi[i].onmouseover = function(){clearInterval(timer)};
aLi[i].onmouseout = function(){timer = setInterval(function(){doMove(iNow);},3000)}
var oli = document.createElement('li');
with(oli.style)
{
width = Min_width + "px";
height = Min_height + "px";
cssFloat = 'left';
styleFloat ='left';
margin = "5px 8px 0 0";
background = 'url('+Min_url+') no-repeat left top';
cursor = "pointer";
}
smallUl.appendChild(oli);
}
obj.appendChild(smallUl);
var smallPic = smallUl.getElementsByTagName('li');
var oT = smallUl.getElementsByTagName('li')[0];
var smallLeft = aLi.length(oT.offsetWidth+css(oT,'marginRight'));
var oDix = css(oT,'marginRight');
with(smallUl.style)
{
position = 'absolute';
width = smallLeft+'px'
height = '20px';
right=(obj.offsetWidth- smallLeft)/2+'px';
bottom='10px';
zIndex=999999;
listStyle = 'none';
overflow = 'hidden';
}
for(var i=0;i<smallPic.length;i++)
{
smallPic[i].index=i;
smallPic[i].onmouseover =function(){ clearInterval(timer); var iNow = this.index;flashShow(iNow);}
smallPic[i].onmouseout = function(){timer = setInterval(function(){doMove(iNow);},3000)}
}
var oBg = document.createElement('li');
smallUl.appendChild(oBg);
with(oBg.style)
{
position='absolute';
left = '0';
top = '5px';
width = 14 + "px";
height = 11 + "px";
cursor = "pointer";
background = 'url('+Min_url_on+') no-repeat left top'
}
oBg.onmouseover = function(){clearInterval(timer)};
oBg.onmouseout = function(){timer = setInterval(function(){doMove(iNow);},3000)}
function flashShow(iNum)
{
for(var i=0;i<aLi.length;i++){startMove(aLi[i],{opacity:0});}
startMove(aLi[iNum],{opacity:100})
/
YunStartMove(oBg,{left:smallPic[0].offsetWidthiNum+oDixiNum},Yun_MOVE_TYPE.BUFFER);/
startmove(oBg,{left:smallPic[0].offsetWidth
iNum+oDixiNum},10)
/
startmove(oBg,{left:smallPic[0].offsetWidthiNum+oDixiNum},200)/
iNow = iNum;
}
function doMove(iNum)
{iNum++;if(iNum>aLi.length-1){iNum=0;};flashShow(iNum);}
timer = setInterval(function(){doMove(iNow);},3000)
}
/
-------------------随机运动图片---------------------*/
function randFlash(id)
{
var oRanDiv = document.getElementById(id);
var oZindexA = oRanDiv.getElementsByTagName('a')[0];
var aImg = oRanDiv.getElementsByTagName('img');
var aIMG_ARRAY = [];
var fnArray = null;
fnArray = [function (obj){randShow(obj,-1,0)},function (obj){randShow(obj,1,0)},function (obj){randShow(obj,0,1)},function (obj){randShow(obj,0,-1)}]
for(var i=0;i<aImg.length;i++)
{
aIMG_ARRAY.push(aImg[i]);

}
function randShow(obj,iLeft,iTop)
{
startmove(obj,{left:iLeftobj.offsetWidth+obj.offsetLeft,top:iTopobj.offsetHeight+obj.offsetTop,opacity:0},400,function()
{
css(obj,'left',0)(obj,'top',0)(obj,'opacity',1)(obj, 'zIndex', 1)
})
}
//randShow(aIMG_ARRAY[2],0,1)
function picShow()
{
this.blur();
for(var i=0;i<aIMG_ARRAY.length;i++)
{
css(aIMG_ARRAY[i],'zIndex',i+2)(aIMG_ARRAY[i],'opacity',1);
}
var oImg = aIMG_ARRAY.pop();
aIMG_ARRAY.unshift(oImg);
fnArrayparseInt(Math.random()*999999)%aIMG_ARRAY.length
}
oZindexA.onclick = oZindexA.onmouseover = picShow;
}
function MoveTOTOP(backTopId)
{
var backtop = document.getElementById(backTopId);
var timer=null;
var bySys=false;
window.onscroll = function()
{
if(!bySys){clearInterval(timer);};bySys=false;
var scrolltop=document.documentElement.scrollTop||document.body.scrollTop;
scrolltop==0 ? backtop.style.display = 'none' : backtop.style.display = 'block';
}
backtop.onclick = function()
{
timer = setInterval(function(){
var scrolltop=document.documentElement.scrollTop||document.body.scrollTop;
var speed=(Math.floor(-scrolltop/8));
bySys=true;document.documentElement.scrollTop=document.body.scrollTop=scrolltop+speed;
if(scrolltop==0){clearInterval(timer);}
},30)
}
}
function MoveTOTOPLeft(backTopId)
{
var backtop = document.getElementById(backTopId);
var oClose = getById('to-close');
var timer=null;
var bySys=false;
window.onscroll = function()
{
var scrolltop=document.documentElement.scrollTop||document.body.scrollTop;
startmove(backtop,{top:(document.documentElement.scrollTop||document.body.scrollTop)+300},300);
}
oClose.onclick = function()
{
css(backtop,'display','none') ;

}
}
function ajax(url,fnSuccess,fnFaild) //ajax 的应用
{
//1.创建ajax对象
var oAjax=null;
if(window.XMLHttpRequest)
{
oAjax = new XMLHttpRequest();
}
else
{
oAjax = new ActiveXObject('Microsoft XMLHTTP');

}
//2.打开服务器
//open(方法, url, 是否异步)
oAjax.open('GET',url,true)
oAjax.send();
oAjax.onreadystatechange = function()
{
if(oAjax.readyState==4&&oAjax.status==200)
{
fnSuccess(oAjax.responseText)
}
else
{
if(fnFaild)
{
fnFaild();
}
}
}

}
function randomSort(a,b) //随机排序法
{
return Math.random()>.5?-1:1;
}
function quicksort(arr) //快速排序由小到大
{
if(arr.length<=1){return arr;}
var arrMiddle = Math.floor(arr.length/2);
var arrMiddleValue = arr.splice(arrMiddle,1);
var aLeft = [];
var aRight = [];
for(var i=0;i<arr.length;i++)
{
if(arr[i]<arrMiddleValue)
{
aLeft.push(arr[i])
}else
{
aRight.push(arr[i])
}
}
return quicksort(aLeft).concat([arrMiddleValue],quicksort(aRight))
}
function evFocus(obj,str)
{
if(obj.value == str)
{
obj.value = '';
}
}
function evBlur(obj,str)
{
if(obj.value == '')
{
obj.value = str;
}
}
function testCheckBox(obj)
{
//id 必须是form的--不然获取不到name
var oDoc1 = document.getElementById(obj);
var aRangBox = oDoc1.aa.length;
var count = 0;
for(var i=0;i<aRangBox;i++)
{
if(oDoc1.aa[i].checked)
{
count++;
}else
{

}
}
if(!count)
{
alert('没选')
}
}
function getRndAndFillZero()
{
var str=Math.ceil(Math.random()*16777215).toString(16);
while(str.length<6)
{
str='0'+str;
}

return str;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,065评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,750评论 2 17
  • 以下是常用的代码收集,学习用。转自豪情博客园 1. PC - js 返回指定范围的随机数(m-n之间)的公式 re...
    自由加咖啡阅读 996评论 0 1
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,853评论 0 1
  • 1.语言基础2.严格模式3.js组成(ECMAScript DOM BOM)4.各种(DOM BOM)例子5.组件...
    蒲公英_前端开发者阅读 1,545评论 0 3