javascript 常用函数归纳


    /*
      * 序列化
      * */
     var serialize = function(json){
         var str = '';
         for(var attr  in json){
             str +=  attr + '=' +json[attr] + '&';
         }
         return str.substr(0,str.length-1);
     }

     /*
      * 遍历元素
      * callback 会传入index,el 当前元素
      * this指向当前对象
      * */
     var each = function(array,callback){
         if (Object.prototype.toString.call(array) !== '[object Array]') return;
         for(var i= 0,len = array.length;i<len;i++){
             callback.call(array[i],i,array[i]);
         }
     }

     /*
     * 数据排序-按中文拼音字母
     * */
     var dataSort = function(data){
        return data.sort(function(a,b){
            return a.msg.localeCompare(b.msg);
        })
     }


 
/*
      * ajax 封装
      * */
     var  ajax = function(config){
         var xhr = window.XMLHttpRequest ?
             new XMLHttpRequest() :
             new ActiveXObject('Microsofr.XMLHTTP');

         xhr.onreadystatechange = function(){
             if(xhr.readyState == 4 && xhr.status == 200){
                 config.success && config.success(xhr);
             }
         }

         if(config.method){
             xhr.open(config.method,config.url,true);
             config.method == 'get' ?
                 xhr.send() :
                 (xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"),
                     xhr.send(serialize(config.data)));

         }

     };



//获取元素的纵坐标
function getTop(e) {
	var offset = e.offsetTop;
	if (e.offsetParent != null) offset += arguments.callee(e.offsetParent);
	return offset;
}


//获取元素的横坐标
function getLeft(e) {
	var offset = e.offsetLeft;
	if (e.offsetParent != null) offset += arguments.callee(e.offsetParent);
	return offset;
}


一、将noedeList对象转换成数组

伪数组nodeList,不能直接使用数组方法slice()

var arrify = function(list){
<span style="white-space:pre">	</span>return Array.prototype.slice.call(list);
}


一、去掉一个字符串的首尾空格

function trim(s){
<span style="white-space:pre">	</span>return s.replace(/(^\s*)|(\s*$)/g,"");//正则表达式,去掉首尾空格
}


一、得到一个字符串的字节长度

function getBytesLength(str){
            var len = str.length;
            for (var i = 0; i < str.length; i++) {
                if(str.charCodeAt(i) > 255){    //unicode 字符编码,中文都是>255的
                    len++;
                }
            }
            return len;
        }


一、得到dom对象的某css属性

function getStyle(obj,attr){
    if(obj.currentStyle){
        return obj.currentStyle[attr];
    }else
    {
        return getComputedStyle(obj,false)[attr];
    }
}
二、按class查找dom对象集合

function getByClass(oParent,sClass){
    var aEle = oParent.getElementsByTagName('*');
    var results = [];
    for (var i = 0; i < aEle.length; i++) {
        var obj = aEle[i];
        if(obj.className == sClass){
            results.push(obj);
        }
    }
    return results;
}

三、给某dom对象设置css属性集

function setStyle(obj,json){
    for(var atrr in json){
        obj.style[atrr] = json[atrr];
    }
}



一、检测浏览器类型

  function userBrowser(){
            var browserName=navigator.userAgent.toLowerCase();
            if(/msie/i.test(browserName) && !/opera/.test(browserName)){
                alert("IE");
                return ;
            }else if(/firefox/i.test(browserName)){
                alert("Firefox");
                return ;
            }else if(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName)){
                alert("Chrome");
                return ;
            }else if(/opera/i.test(browserName)){
                alert("Opera");
                return ;
            }else if(/webkit/i.test(browserName) &&!(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName))){
                alert("Safari");
                return ;
            }else{
                alert("unKnow");
            }
        }

二、对象克隆

//克隆有两种方法:一种是“浅克隆”,一种是“深克隆”(深度克隆)。
        //浅克隆:基本类型为值传递,对象仍为引用传递。
        //深克隆(深度克隆):所有元素均完全复制,并于原对象完全独立(原对象的修改不影响新对象)。
        //深度克隆的代码如下(深克隆去掉递归即为浅克隆):
        Object.prototype.clone = function () {
            var o = this.constructor === Array ? [] : {};
            for (var e in this) {
                o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];
            }
            return o;
        }

三、实现Hashtable

 function Hashtable(array)//自定义hashtable
        {
            this.length = 0;
            this._hash = new Object();
        }
        Hashtable.prototype.put = function (key, value) {
            if (typeof (key) != "undefined") {
                if (this.containsKey(key) == false) {
                    this._hash[key] = typeof (value) == "undefined" ? null : value;
                    this.length++;
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }

        Hashtable.prototype.remove = function (key) {
            if (this.containsKey(key)) {
                delete this._hash[key];
                this.length--;
            }
        };
        Hashtable.prototype.size = function () {
            return this.length;
        };
        Hashtable.prototype.get = function (key) {
            return this._hash[key];
        };
        Hashtable.prototype.containsKey = function (key) {
            return  (key in this._hash);//in可以用于检测属性是否存在
        };
        Hashtable.prototype.containsValue = function (value) {
            for (var k in this._hash) {
                if (this._hash[k] == value) {
                    return true;
                }
            }
            return false;
        };
        Hashtable.prototype.clear = function () {
            for (var k in this._hash) {
                delete this._hash[k];
            }
        };
        Hashtable.prototype.keys = function () {
            var keys = new Array();
            for (var k in this._hash) {
                keys.push(k);
            }
            return keys;
        };
        Hashtable.prototype.values = function () {
            var values = new Array();
            for (var k in this._hash) {
                values.push(this._hash[k]);
            }
            return values;
        };
四、将指定节点插入到 某节点之后

function insertAfter(newNode, targetNode) {
            if (targetNode.parentNode.lastChild == targetNode) {
                targetNode.parentNode.appendChild(newNode);
            } else {
                targetNode.parentNode.insertBefore(newNode, targetNode.nextSibling);
            }
        }

五、时间倒数计时程序

function time() {
            var endtime = new Date("2014/04/01,23:06:30");
            var nowtime = new Date();
            //两时间差为毫秒数,除以1000则转换为秒数
            var leftsecond = parseInt((endtime.getTime() - nowtime.getTime()) / 1000);

            d = parseInt(leftsecond / (3600 * 24)); //计算出相差天数
            h = parseInt((leftsecond / 3600) % 24); //计算出总小时,再取余(每过60小时,重新计算)
            m = parseInt((leftsecond / 60) % 60); //计算出总分钟数,再取余
            s = parseInt(leftsecond % 60); //直接取余

            alert(d + '天' + h + "小时" + m + "分" + s + "秒");
            //setTimeout(time,1000);//每个一秒刷新一次数据
        }

六、去掉一个数组中的重复元素

function single(arry) {
            var temp = [];
            var result = [];
            for (var i = 0; i < arry.length; i++) {
                if (!temp[arry[i]]) {
                    temp[arry[i]] = 1;
                    result.push(arry[i]);
                }
            }
            return result;
        }

七、判断一个字符串中出现次数最多的字符,统计这个次数

function timecount(str) {
            var hash = {};
            for (var i = 0; i < str.length; i++) {
                if (!hash[str[i]]) {
                    hash[str[i]] = 1;
                } else {
                    hash[str[i]]++;
                }
            }
            var maxkey, maxvalue = 0;
            for (var temp in hash) {
                if (hash[temp] > maxvalue) {
                    maxkey = temp;
                    maxvalue = hash[temp];
                }
            }
            alert(maxkey + "/" + maxvalue);
        }

八、把URL参数解析为一个对象

function parseQueryString(url){
            var obj = {};
            var temp1 = url.split('?');
            if(temp1.length > 1){
                obj['target'] = temp1[0];
                var temp2 = temp1[1].split('&');
                for (var i = 0; i < temp2.length; i++) {
                    var aaa = temp2[i].split('=');
                    obj[aaa[0]] = aaa[1];
                }
                return obj;
            }else{
                obj['target'] = url;
                return obj;
            }
        }

九、跨浏览器控制台日志打印

function log(message){
    if(typeof console =='object'){
        console.log(message);
    }else if(typeof opera == 'object'){
        opera.postError(message);
    }else if(typeof java == 'object' && typeof  java.lang =='object'){
        java.lang.System.out.println(message);
    }
}

十、跨浏览器得到选择的文本

function getSelectedText(textbox){
    if(document.selection){
        return document.selection.createRange().text;
    }else{
        return textbox.value.substring(textbox.selectionStart,textbox.selectionEnd);
    }
}

十一、跨浏览器选择部分文本

function selectText(textbox,startIndex,stopindex){
    if(textbox.setSelectionRange()){
        textbox.setSelectionRange(startIndex,stopindex);
    }else if(textbox.createTextRange()){
        var range = textbox.createTextRange();
        range.collapse(true);
        range.moveStart("character",startIndex);
        range.moveEnd("character",stopindex-startIndex);
        range.select();
    }
    textbox.focus();
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值