常用方法代码

jQuery实现点击除了特定div的页面其它地方,隐藏该div功能

$(document).bind('click', function (e) {
    var e = e || window.event; //浏览器兼容性 
    var elem = e.target || e.srcElement;
    while (elem) { //循环判断至跟节点,防止点击的是div子元素 
        if (elem.className && elem.className == '元素id或者class') {
            return;
        }
        elem = elem.parentNode;
    }
    $('元素id或者class').hide()
});

判断是否是数组

  1. constructor
var arr = [];
arr.constructor == Array; //true
  1. jQuery
Object.prototype.toString.call(value) == '[object Array]'
// 利用这个方法,可以写一个返回数据类型的方法
var isType = function (obj) {
     return Object.prototype.toString.call(obj).slice(8,-1);
}
  1. ES5新增方法isArray()
var a = new Array(123);
var b = new Date();
console.log(Array.isArray(a)); //true
console.log(Array.isArray(b)); //false

判断IE浏览器的具体版本

function IEVersion() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器  
    var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器  
    var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
    if (isIE) {
        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
        reIE.test(userAgent);
        var fIEVersion = parseFloat(RegExp["$1"]);
        if (fIEVersion == 7) {
            return 7;
        } else if (fIEVersion == 8) {
            return 8;
        } else if (fIEVersion == 9) {
            return 9;
        } else if (fIEVersion == 10) {
            return 10;
        } else {
            return 6;//IE版本<=7
        }
    } else if (isEdge) {
        return 'edge';//edge
    } else if (isIE11) {
        return 11; //IE11  
    } else {
        return -1;//不是ie浏览器
    }
}

判断是否是IE11及以下或者其他(其他里包括IE edge)

function isIE() {
    //这里判断为true包括所有IE浏览器,包括IE11
    if (!!window.ActiveXObject || "ActiveXObject" in window) {
        document.body.innerHTML = '<h1>你的浏览器已过时,请更新你的浏览器</h1>';
        return true;
    } else {
        return false;
    }
}

JS 识别不同浏览器信息

function myBrowser() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  
    var isOpera = userAgent.indexOf("Opera") > -1;
    if (isOpera) {
        return "Opera"
    }; //判断是否Opera浏览器  
    if (userAgent.indexOf("Firefox") > -1) {
        return "Firefox";
    }  //判断是否Firefox浏览器  
    if (userAgent.indexOf("Chrome") > -1) {
        return "Chrome";
    }   //判断是否Google浏览器  
    if (userAgent.indexOf("Safari") > -1) {
        return "Safari";
    } //判断是否Safari浏览器  
    if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
        return "IE";
    }; //判断是否IE浏览器  
} 

格式化金钱,每千分位加逗号

function format(str) {
    let s = ''
    let count = 0
    for (let i = str.length - 1; i >= 0; i--) {
        s = str[i] + s
        count++
        if (count % 3 == 0 && i != 0) {
            s = ',' + s
        }
    }
    return s
}
format('1000') //1,000
function format(str) {
    return str.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
}

如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为『12,000,000.11』

function commafy(num) {
    return num && num
        .toString()
        .replace(/(\d)(?=(\d{3})+\.)/g, function ($1, $2) {
            return $2 + ',';
        });
}

反转数组

要求 input: I am a student

output: student a am I

输入是数组 输出也是数组

不允许用 split splice reverse

function reverseArry(arr) {
    const result = []
    while (arr.length) {
        result.push(arr.pop())
    }
    
    return result
}

console.log(reverseArry(['I', 'am', 'a', 'student']))
// ["student", "a", "am", "I"]
function reverseArry(arry) {
    const result = []
    const distance = arry.length - 1
    for (let i = distance; i >= 0; i--) {
        result[distance - i] = arry[i]
    }

    return result
}

时间戳

const timestamp = +new Date("2019-02-14");
// timestamp => 1550102400000

判断奇数偶数

const OddEven = num => !!(num & 1) ? "odd" : "even";
const num = OddEven(2);
// num => "even"

生成范围随机数

const RandomNum = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
const num = RandomNum(1, 10);