JavaScript常见函数

兼容获取非行间样式

function getStyle(obj,name){ return obj.currentStyle?obj.currentStyle[name]:getComputedStyle(obj,false)[name]; }

生成随机数(n下限,m上限)
function rnd(n,m){ return parseInt(Math.random()*(m-n)+n) }

在数组中查重
function findInArr(num,arr){ for(var i=0; i

数组去重
4种算法: 1.Array.prototype.unique1 = function(){ var n = []; //一个新的临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n; }2.Array.prototype.unique2 = function(){ var n = {},r=[]; //n为hash表,r为临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { if (!n[this[i]]) //如果hash表中没有当前项 { n[this[i]] = true; //存入hash表 r.push(this[i]); //把当前数组的当前项push到临时数组里面 } } return r; }3.Array.prototype.unique3 = function(){ var n = [this[0]]; //结果数组 for(var i = 1; i < this.length; i++) //从第二项开始遍历 { //如果当前数组的第i项在当前数组中第一次出现的位置不是i, //那么表示第i项是重复的,忽略掉。否则存入结果数组 if (this.indexOf(this[i]) == i) n.push(this[i]); } return n; }4.Array.prototype.unique4 = function() { this.sort(); var re=[this[0]]; for(var i = 1; i < this.length; i++) { if( this[i] !== re[re.length-1]) { re.push(this[i]); } } return re; }

去空格函数
//供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s){ if(s == null) { return ""; } var whitespace = new String(" \t\n\r"); var str = new String(s); if (whitespace.indexOf(str.charAt(0)) != -1) { var j=0, i = str.length; while (j < i && whitespace.indexOf(str.charAt(j)) != -1){ j++; } str = str.substring(j, i); } return str; } //去掉右边的空白 function trimRight(s){ if(s == null) return ""; var whitespace = new String(" \t\n\r"); var str = new String(s); if (whitespace.indexOf(str.charAt(str.length-1)) != -1){ var i = str.length - 1; while (i >= 0 && whitespace.indexOf(str.charAt(i)) != -1){ i--; } str = str.substring(0, i+1); } return str; } 正则实现:

补零函数
function toDou(n){ return n<10? '0'+n : ''+n; }

某个对象添加Class
function addClass(obj,ClassName){ if(obj.className == ''){ obj.className = ClassName; } else{ var arrClassName = obj.className.split(' '); var _index = arrIndexof(arrClassName,ClassName); if(_index == -1){ obj.className += ' '+ ClassName; } } }

某个对象移除Class
function removeClass(obj,ClassName){ if(obj.className != ''){ var arrClassName = obj.className.split(' '); var _index = arrIndexof(arrClassName,ClassName); if( _index != -1 ){ arrClassName.splice(_index,1); obj.className = arrClassName.join(' '); } } }

在当前class数组中查找是否存在
function arrIndexof(arr,v){ for(var i=0; i

通过className获取元素(parent父级,ClassName要获取的class名称)
function getClassName(parent,ClassName){ if (document.getElementsByClassName){ return parent.getElementsByClassName(ClassName); } else { var aEls = parent.getElementsByTagName('*'); var arr = []; for (var i=0; i

获取一个字符串字节长度(str为要获取的字符串,type为'gbk''gb2312')
function getByLen(str,type){ var len = 0; for (var i=0; i='\u4e00' && str.charAt(i)<='\u9fa5'){ if(type == 'gbk' || type == 'gb2312'){ len+=2; } else { len+=3; } } else { len++; } } return len; }

获取元素到页面的绝对距离(无论有没有,有多少定位父级)
function getPos(obj){ var x = 0; var y = 0; while (obj){ x += obj.offsetLeft; y += obj.offsetTop; obj = obj.offsetParent; //图片懒加载最高定位到父级为body } return {left:x,top:y}; }

事件绑定
function addEvent(obj,oEvn,fn){ if (obj.addEventListener) { obj.addEventListener(oEvn,fn, false); } else{ obj.attachEvent('on' + oEvn,function(){ fn.call(obj); }); } }

解除事件绑定(无法解除匿名函数)
function removeEvent(obj,oEvn,fn){ if(obj.removeEventListener){ obj.removeEventListener(oEvn, fn, false); }else{ obj.detachEvent('on' + oEvn,function(){ fn.call(obj); }); } }

鼠标滚轮事件 滚轮事件不支持chrome,兼容事件
处理兼容: if(window.navigator.userAgent.indexOf('Firefox')!=-1){ oBox.addEventListener('DOMMouseScroll',function(){ alert('火狐滚轮事件'); },false); }else{ oBox.onmousewheel=function(){ alert('其他浏览器滚轮事件'); }; } function addWheel(obj,fn){ if (window.navigator.userAgent.toLowerCase().indexOf('firefox') != -1){ obj.addEventListener('DOMMouseScroll',wheel,false); } else { addEvent(obj,'mousewheel',wheel); } functionwheel(ev){ var oEvent = ev || event; var bDown = true; //假设鼠标向下滚动为true if(oEvent.wheelDelta){ if(oEvent.wheelDelta > 0){//Chrome、IE系列 bDown = false; //向下 } else { bDown = true; //向上 } } else { if(oEvent.detail < 0 ){//FF bDown = false; //向上 } else { bDown = true; //向下 } } fn && fn(bDown); oEvent.preventDefault && oEvent.preventDefault(); return false; } } window.onload = function () { var oBox = document.getElementById('box'); addWheel(oBox,function(bDown){ if (bDown) { alert(1); }else { alert(2); } }) } //domReady(替代window.onload)如何兼容浏览器 function domReady(fn){ if(document.addEventListener){ document.addEventListener('DOMContentLoaded',function(){//高版本浏览器 fn&&fn(); },false); }else { document.onreadystatechange = function(){ if (document.readyState == 'complete'){//低级浏览器中运行 (传输的不仅是数据而json传输数据) fn&&fn(); } } }

【JavaScript常见函数】}

    推荐阅读