JS实用技巧(三)

作者 BiYuqi 日期 2017-01-02
JS实用技巧(三)

该系列文章主要记录自己平常所用,js一些技巧,作为知识的积累。

1.获取或设置元素样式

/**
    css 获取或者设置元素的样式
    css($('div'),'width','100px');
*/
function css(elem,styles,attr){
    if(arguments.length <= 1){
        return;
    }
    if(arguments.length ===2){
        if(elem.currentStyle){
             return elem.currentStyle[styles];
        }
        return window.getComputedStyle(elem)[styles];
    }
    elem.style[styles] = attr;
}

2.给元素添加Class样式

/**
    给元素添加某个class样式
    elem 元素
    cName 添加的样式
    支持多个class添加 字符串用空格隔开
*/
function addClass(elem,cName){
    var reg = new RegExp('(^|\\s)' + cName+ '(\\s|$)');
    if(!reg.test(elem.className)){
        elem.className += '  ' + cName;//有个空格
    }
}

3.元素是否有某个Class样式

//返回值 true or false
function hasClass(elem,hClass){
    var reg = new RegExp('(^|\\s)' + hClass+ '(\\s|$)');
    return (reg.test(elem.className)) ? true:false;
}

4.去除元素的某个class样式

/**
    去除元素的某个class样式
    elem 元素
    rName 去除的样式
    支持多个class去除 字符串用空格隔开
*/
//调用了上个函数hasClass
function removeClass(elem,rName){
    if(hasClass(elem,rName)){
        var reg = new RegExp('(\\s|^)'+rName+'(\\s|$)', 'g');
        elem.className = elem.className.replace(reg, ' ');//‘ ’空格
    }
}

5.找出数组中第二大数字

function getNum(arr){
    var arr = arr.sort(function(a,b){
        return b-a;//从大到小排序
    })
    return arr[1];//取出第二个
}
var test = [1,2,41,8,5,90,45,3];
console.log(getNum(test));//45

6.传入任意数字,自动求和

var num = 0;
function sum(){
    for(var i=0;i<arguments.length;i++){
        num += arguments[i];
    }
    return num;
}
console.log(sum(1,2,3));//6
console.log(sum(2016,1));//2017

7.传入任意数字,找出最大数字

var num = 0;
function getMax(){
    for(var i=0;i<arguments.length;i++){
        if(num < arguments[i]){
            num = arguments[i];
        }
    }
    return num;
}
console.log(getMax(1,2,4,12,89,56,32,15));//89
console.log(getMax(9,5,7,8,3,1));//9