js中一些兼容使用的方法

//获取元素样式的方法(兼容性强)
    //参数:
            // obj:元素对象.
            //  sty:  样式
function getstyle(obj ,sty){
    if(window.getcomputedstyle){
        return getcomputedstyle(obj,null)[样式];
    }else{
        return obj.currentstyle[sty];
    }
}

// 1.事件对象  event         ie8及以下是将事件对象作为window的属性进行保存的
//      解决: event = event || window.event
// 2.滚动条 Chrome认为滚动条是body的其他浏览器认为滚动条是html的
//     解决:
            // var 变量 =document.body.scrolltop || document.documentElement.scrollTop
// 切记制作div跟随鼠标移动时不要忘记给div添加绝对定位




//事件的绑定
// 参数:
        // obj:元素对象
        // ev :事件名
        //fun :匿名函数
function bind(obj,ev,fun){
    if(obj.addeventlistener){
        return obj.addeventlistener(ev,fun,false);
    }else{
        return 元素对象.attachevent("on"+ev,function(){
                fun.call(obj);
            });
    }
}

//创建一个可以执行简答动画的函数
// 参数:
        // obj:执行动画的对象
        //attr:要执行动画的样式,比如:left top width height
        //target:执行动画的目标位置
        //speed:移动的速度
        //callback:回调函数,这个动画将会在动画执行完毕后执行
function move(obj,attr,target,speed,callback){
        //关闭上一个定时器
        clearInterval(obj.timer);
        //获取元素目前的位置
        var current=parseInt(getstyle(obj,attr));
        //判断速度的正负值
        if(current>target){
            //此时速度应为负值
            speed=-speed;
        }
        //开启一个定时器,用来执行动画效果
        //向执行动画的对象中添加一个timer属性,用来保存他自己的定时器的标识
        obj.timer=setInterval(function(){
            //获取box1原来的left的值
            var oldvalue=parseInt(getstyle(obj,attr));
            //在旧值的基础上增加
            var newvalue=oldvalue+speed;
            //判断newvalue是否大于800
            if(speed<0&& newvalue<target  || speed>0 && newvalue>target){
                newvalue=target;
            }
            //将新值设置给box1
            obj.style[attr]=newvalue+"px";
            //当元素移动到0px时,使其停止动画
            if(newvalue==target){
                //达到目标,关闭定时器
                clearInterval(obj.timer);
                callback && callback();
            }
        },30);
}



//定义一个函数,用来向一个元素中添加指定的class属性值
//参数 
    // obj :要添加class属性的元素对象
    //cn :要添加的class的值
function addClass(obj,cn){
    obj.className+=" "+cn;
}
//判断一个元素中是否有指定的class属性值
function hasClass(obj,cn){
    var reg=new RegExp("\\b"+cn+"\\b");

    return reg.test(obj.className);
}
//删除一个元素中的指定class属性
function removeClass(obj,cn){
    var reg=new RegExp("\\b"+cn+"\\b");
    obj.className=obj.className.replace(reg,"");
}
//切换一个类
// 如果元素中具有该类,则删除
// 如果元素中没有该类,则添加 
function toggleClass(obj,cn){
    if(hasClass(obj,cn)){
        removeClass(obj,cn);
    }else{
        addClass(obj,cn);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值