一些小节

function star(aDiv){//传入所有div,相应div变,oDiv和aDiv
    for(var i=0;i<aDiv.length;i++){
        //建立索引值(建立在事件外,事件内部获取索引值靠this引入)
        aDiv[i].index=i;
        //建立所有子div的点击事件
        aDiv[i].onclick=function(){
            //建立一个所有子div的循环,在点击事件触发的时候先清空所有星星样式,让其全为灰色
            for(var k=0;k<aDiv.length;k++){
                aDiv[k].style.backgroundPosition="0 0px";
            }
            //建立变量num,让其等于索引值+1
            var num=this.index+1;
            //循环从开始到点击到的所有子div,然后改变图片的定位位置
            for(var j=0;j<num;j++){
                aDiv[j].style.backgroundPosition="0 28px";
            }
        }
    }
}
function select(oAll,aCheck){//全选,全选下所有选择按钮
    oAll.onclick=function(){
        //循环除了全选外的所有多选框
        for(var i=0;i<aCheck.length;i++){
            //this指向的是全选div,即点击全选时所有多选按钮的状态变的和全选框状态一样;
            aCheck[i].checked=this.checked;
        }
    }
    //循环除了全选外的所有多选按钮
    for(var i=0;i<aCheck.length;i++){
        //当子元素多选框被点击时发生的时间
        aCheck[i].onclick=function(){
            //建一个变量用来后面储存数组个数
            var num=0;
            //循环数组
            for(var j=0;j<aCheck.length;j++){
                //判断当子复选框被选中时让变量num+1,
                if(aCheck[j].checked==true)
                {
                    num++;
                }
            }
            //当num值等于数组长度即所有子项都被选中
            if(num==aCheck.length){
                //所有子项被选中时让全选也被选中
                oAll.checked=true;
            }
            else{
                //反之不被选中
                oAll.checked=false;
            }
        }
    }
}


function distinct(arr){//传入一个随机数组进行去重
    //建立一个空数组用来存值
    var newArr=[];
    //循环遍历数组
    for(var i=0;i<arr.length;i++){
        //当输入进来的数组不存在该值的时候添加该值,否则不添加
        if(newArr.indexOf(arr[i])==-1){
            //像新数组中添加值
            newArr.push(arr[i]);
        }
    }
    //返回新数组
    return newArr;
}

function random(num,max){//生成num个 0到max的随机数
    //建数组arr存用户输入的值  0到max
    var arr=[];
    //建数组newarr存 arr中的随机数
    var newarr=[];
    //循环添加arr数组中的值,0到max之间所有值
    for(var i=1;i<max;i++){
        arr.push(i);
    }
    //循环次数是num,就是取多少次随机数添加到newarr中
    for(var i=0;i<num;i++){
        newarr.push(arr.splice(Math.floor(Math.random()*arr.length),1));
    }
    //跟数组排序
    var rua=newarr.sort(function(x,y){
        return x-y;
    });
    //返回排序后的数组
    return rua;
}

function  copy1(json){//json深度拷贝
    var newJson = {};
    for(var i in  json){
        if(typeof json[i] == "object"){
            newJson[i] = copy(json[i]);
        }else {
            newJson[i] = json[i];
        }
    }
    return newJson;
}

function copy2(json) {//json深度拷贝2
    var newJson={};
    for(x in json){
        if(json[x] instanceof Array){
            newJson[x]=[];
            for(y in json[x]){
                if(json[x][y] instanceof Object){
                    obj(newJson[x],json[x],y);
                }else{
                    newJson[x][y]=json[x][y]
                }
            }
        }else  if (json[x] instanceof Object){
            obj(newJson,json,x)

        }else{
            newJson[x]=json[x]
        }
    }

    function obj(newJson,oldJson,x) {
        var m;
        newJson[x]={};
        for(m in oldJson[x]){
            newJson[x][m]=oldJson[x][m]
        }

    }
    return newJson

}
        function dedupe(array) {//数组去重新方法
            return [new Set(array)]
        }


        function Add(arr){  //用法:输入一个值累加从1到这个值的和  //1到n的和
            //判断递归的值是否到1
            if(arr==1){
                //如果到1就返回1
                return 1;
            }
            //不然就返回输入值然后在执行下一级那个函数
            return arr+Add(arr-1);
        }

        function rabbit(arr){//数兔子函数 兔子问题
            //当用户输入1或者2的时候返回固定值
            if(arr==1||arr==2){
                return 2
            }
            //如果不是1或者2则返回他前面的2个值之和
            return rabbit(arr-2)+rabbit(arr-1);
        }

       function Uncertain(){//不定参求和
           //建个变量用来储存实参和
           var j=0;
           //循环所有实参
           for(var i=0;i<arguments.length;i++){
               //让所有遍历的实参等于j
               j+=arguments[i];
           }
           //返回j
           return j;
       }

function getByClass(oParent,sClass)//传入他的父级和索要获取的类名
{
    //建一个变量获取父级下的所有元素
    var aEle=oParent.getElementsByTagName('*');
    //建一个数组
    var aResult=[];
    //建立正则查看匹配类名
    var re=new RegExp('\\b'+sClass+'\\b','i');
    //循环所有子元素的长度
    for(var i=0;i<aEle.length;i++)
    {
        //如果当前子项存在该类名
        if(re.test(aEle[i].className))
        {
            //将子项添加到数组中
            aResult.push(aEle[i]);
        }
    }
    //返回数组
    return aResult;
}

function addEvent(odiv,eve,fn,boll){//事件监听的兼容
    if(odiv.addEventListener){
        odiv.addEventListener(eve,fn,boll);
    }
    else if(odiv.attachEvent){
        odiv.attachEvent("on"+eve,fn);
    }
}




var timer=null;
function moveStart(iTarget)//写外面  流氓网站滚动条
{
    var oDiv = document.getElementById('div');
    clearInterval(timer);
    timer = setInterval(function () {
        var iSpeed = (iTarget - oDiv.offsetTop) / 4;
        iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
        if (oDiv.offsetTop == iTarget) {
            clearInterval(timer);
        }
        else {
            oDiv.style.top = oDiv.offsetTop + iSpeed + 'px';
        }
    }, 30)
}


function getcookie(key){
    var cookie=document.cookie;
    var arr=[];
    var oName=[];
    var oValue=[];
    //将数组以;分割
    var newcookie=cookie.split(";");
    for(var i=0;i<newcookie.length;i++){
        //将数组以=分割
        arr.push(newcookie[i].split("="));
    }
//        循环添加key值和value值
    for(var j=0;j<arr.length;j++){
        oName.push(arr[j][0]);
        oValue.push(arr[j][1]);
    }
    //清除空格 判断返回数组  卓著牛逼 卓著天秀
    for(var k=0;k<oName.length;k++){
        oName[k]=oName[k].replace(" ","");
        if(oName[k]==key){
            return [oName[k],oValue[k]];
        }
    }
}
function setcookie(key,value,time){//设置cookie
    time=new Date();
    time.setDate(time.getDate()+30);
    document.cookie=`${key}=${value};expires=`+time;
}



猜你喜欢

转载自blog.csdn.net/thinkingw770s/article/details/80959633