美文网首页我爱编程
原生js常用方法

原生js常用方法

作者: 紫陌兰溪 | 来源:发表于2018-04-10 09:41 被阅读0次

1.实现jquery中addClass()和removeClass()的功能:

function addClass( obj, className){
    if( obj.className ==''){
        obj.className = className;
    }else{
        var arrClassName = obj.className.split(' ');
        if(arrIndexOf( arrClassName, className) ==-1){
            obj.className += ' '+className;
        }
    }
}
function removeClass( obj, className){
    if(obj.className !=''){
        var arrClassName = obj.className.split(' ');
        if(arrIndexOf( arrClassName,className )!=-1 ){
            arrClassName.splice(arrIndexOf( arrClassName,className ),1);
            obj.className = arrClassName.join(' ');
        }
    }
}
//判断要添加的类是否已存在
function arrIndexOf(arr,v){
    for(var i=0;i<arr.length;i++){
        if(arr[i]==v){
            return i;
        }
    }
    return -1;
}

2.写一个placeholder的兼容函数,value为“请输入内容”。当获取焦点时清空,失去焦点且为空时恢复

    <input type="text" value="请输入内容" id="text1" />
    <script>
        var oText1=document.getElementById("text1");
        oText1.onfocus=function(){
            if(this.value=="请输入内容"){
                this.value='';
            }
        }
        oText1.onblur=function(){
            if(this.value==''){
                this.value=="请输入内容";
            }
        }
    </script>
</body>

2.实现了事件绑定函数:

function bind(obj,evname,fn){
    if(obj.addEventListener){
        obj.addEventListener(evname,fn,false);
    }else{
        obj.attachEvent('on'+evname,function(){
            fn.call(obj);//调用call方法,在IE下将this从指向window改为指向当前对象
        }
    )}
}

3.实现事件解绑:

function removBind(obj,evname,fn,bl){
    if(obj.removeEventListener){
        obj.removeEventListener(evname,fn,bl)
        }else{obj.detachEvent('on'+evname,fn,function(){
            fn.call(obj);
        })
    }
}

4.事件侦听器:

var Event = {
     // 页面加载完成后
     readyEvent : function  (fn) {
       if (fn == null) {
           fn = document;
       }
       var oldonload = window.onload;
       if (typeof window.onload != 'function') {
           window.onload = fn ;
       }else{
           window.onload = function  () {
             oldonload();
             fn();
           }
       };
     },
     //添加事件
     addEvent : function(element, type, hander) {
       if (element.addEventListener) {        //非IE
                //事件类型、需要执行的函数、是否捕捉
           element.addEventListener(type, hander, false);
       }else if(element.attachEvent){        //IE
           element.attachEvent('on' + type,function  () {
               hander.call(element);
           })
       }else{
           element['on' +type] = hander;
       };
     },
     //移除事件
     removeEvent : function  (element, type, hander) {
       if (element.removeEventListener) {
           element.removeEventListener(type, handler, false)
       }else if (element.attachEvent) {
           element.attachEvent('on' + type, hander);
       }else{
           element['on' + type] = null;
       };
     },
     //阻止事件
     stopPropagation : function  (event) {
       if (event.stopPropagation) {
           event.stopPropagation();    //W3C标准
       }else{
           event.canceBubble = true;   //IE
       };
     },
     //取消默认事件
     preventDefault : function (event) {
       if (event.preventDefault) {
             event.preventDefault();
       };
     },
     //获取事件目标
     getTarget : function (event) {
       return event.target|event.srcElement;
     },
     //获取event对象的引用,取到事件的所有信息,确保随时能使用event;
     getEvent:function (event) {
       var event = event || window.event;
       if (!event) {
           var c = this.getEvent.caller;
           while(!c){
               event = c.arguments[0];
               if (event && Event == ev.constructor) {
                   break;
               };
               c = c.caller;
           }
       };
       return event;
     }    
 }

相关文章

  • 转载几篇BOM的常用方法

    原生js学习笔记5——BOM操作Bom操作常用方法

  • Recent Problems

    document.createElement创建的元素有哪些属性和方法。其他常用JS原生DOM方法。 Vue.js...

  • 原生js常用方法

    1.实现jquery中addClass()和removeClass()的功能: 2.写一个placeholder的...

  • JS常用方法原生实现

    防抖=>你点的再快都没用(新的点击会清除上一次的点击效果),要特定时间之后才会触发节流=>点击就可以触发事件,但是...

  • WKWebView与vue.js的交互

    原生调用js的方法 js写法 Swift写法 js调用原生的方法 js写法 Swift写法 1.创建和设置JSOb...

  • JS中数组与对象的各种遍历

    开门见山,我尽量精简,话说简书不能列目录,难道这不是刚需?? 一、JS原生方法1.JS遍历的常用方法有for循环和...

  • 第四天2018-10-24

    switf原生与html.js交互 目的:实现点击更换图片的功能原理:点击->js调用原生方法->在原生的方法里面...

  • Android webview 与 js(Vue) 交互

    js 与原生交互分为两种情况:js 调用原生方法,原生调用 js 方法。 本文将对这两种情况分别讲解,H5 端用 ...

  • 原生js常用方法、特点记录

    "156"==156 (true)"=="只比较表面值,不涉及数据的类型,比较类型及值使用 " === "同理还有...

  • 原生JS常用类型判断方法

    泛用方法 typeof typeof 运算符更适用于判断基本数据类型,会返回下列6种类型之一:"number","...

网友评论

    本文标题:原生js常用方法

    本文链接:https://www.haomeiwen.com/subject/widjcftx.html