• 【JavaScript】封装实用方法【持续积累】


    介绍

        主要记录一些平时积累或者常用方法或者小技巧的集合。以便在以后用到还要重复写或者忘记。

    还有就是如果遇到好的方法封装值得收藏进行收藏。这里主要是记录一些包含JavaScript的一些积累。没有什么样式和页面的操作。

    可能会存在一些你认为不是很好或者用不到的。如果你有更好的请指正。交流分享,方便大家,一起进步。

    1.根据文件名切换附件显示图片

            /**
            *@method
            *@param {name} 文件全称
            *@returns 返回该文件类型对应的图片地址
            */
            VerTypeToImage: function (name) {
                var indexBegin = name.lastIndexOf(".");
                var indexEnd = name.length;
                var type = name.substring(indexBegin + 1, indexEnd);
                switch (type) {
                    case "jpg":
                        return "/Content/images/area/NewDocument_Areas/icon_img.png";
                    case "word":
                        return "/Content/images/area/NewDocument_Areas/icon_word.png";
                    case "excel":
                        return "/Content/images/area/NewDocument_Areas/icon_excel.png";
                    case "ppt":
                        return "/Content/images/area/NewDocument_Areas/icon_ppt.png";
                    case "pdf":
                        return "/Content/images/area/NewDocument_Areas/icon_pdf.png";
                    case "zip":
                        return "/Content/images/area/NewDocument_Areas/icon_zip.png";
                    default:
                        return "/Content/images/area/NewDocument_Areas/icon_other.png";
                }
            }

    2.根据文件类型实现上传文件限制特定类型

            /**
            *@method
            *@param {name} 文件全称
            *@returns 返回该文件类型是否存在
            *@desc turn:代表存在运行 false:代表不存在
            */
            VerType: function (name) {
                //运行通过的文件类型集合
                var allowtype = ["doc", "docx", "xls", "xls", , "pdf", "ppt", "pptx", "zip", "jpg", "png", "jpeg", "bmp", "gif"]
                var thisfiletype = name.substring(name.lastIndexOf(".") + 1, name.length).toLowerCase();
                if (allowtype.inArray(thisfiletype) == -1) {
                    console.log("不存在返回")
                    return false;
                } else {
                    console.log("存在返回")
                    return true;
                }
            }

     3.数组扩展判断是否存在某个指定值

                                Array.prototype.inArray = function (val) {
                                    for (var i = 0; i < this.length; i++) {
                                        if (this[i] == val) return i;
                                    }
                                    return -1;
                                };

     4.数组扩展实现删除指定值

                                    //扩展数组删除
                                    Array.prototype.indexOf = function (val) {
                                        for (var i = 0; i < this.length; i++) {
                                            if (this[i] == val) return i;
                                        }
                                        return -1;
                                    };
    
                                    Array.prototype.remove = function (val) {
                                        var index = this.indexOf(val[0]);
                                        if (index > -1) {
                                            this.splice(index, 1);
                                        }
                                    };

     5.数组扩展不允许添加重复元素

    //重写Array中的pushDistinct方法,向数组中添加值不重复的元素
    Array.prototype.pushDistinct = function (val) {
        var index = this.indexOf(val);
        if (index == -1) {
            this.push(val);
        }
    };

     6.冒泡排序

          /**
          *@method
          *@param {data} 要排序数组
          *@returns 返回排序后的数组
          */
        bubble: function(data) {
            for (i = 0; i < data.length - 1; i++) {
                for (j = i + 1; j < data.length; j++) {
                    var nowValue = data[i];
                    if (parseInt(nowValue) > parseInt(data[j])) {
                        var nextValue = data[j];
                        data[j] = nowValue;
                        data[i] = nextValue;
                    }
                }
            }
            return data;
        }

     7.递归

          /**
          *@method
          *@param {n} 一个数组
          *@returns 返回从1-n的和
          */
        function sum(n) {
            return sum(n - 1) + n;
        }

     8.跨域请求jsonp

                 /**
                 *@method 跨域请求jsonp
                 *@param {url} 请求地址
                 *@param {data} 请求参数
                 *@param {func} 回调函数
                 * */
                function(url, data, func) {
                    $.ajax({
                        url: url,
                        dataType: "jsonp",
                        jsonp: "callback", //需要和服务端回掉方法对应
                        cache: false,
                        data: data,
                        success: function(data) {
                            func(data);
                        }
                    });
                }

     9.原生js请求

                 /**
                 *@method 原生js请求
                 *@param {type} 请求类型 get post
                 *@param {url} 请求地址
                 *@param {data} 请求数据
                 *@param {funSusses} 成功回调
                 *@param {funFailure} 失败回调
                 *@returns 返回从1-n的和
                 */
                function(type, url, data, funSusses, funFailure) {
                    //1.创建xhr对象
                    var xhr = null;
                    if(window.XMLHttpRequest) {
                        //标准浏览器
                        xhr = new XMLHttpRequest();
                    } else {
                        xhr = new ActiveXObject("Microsoft.XMLHTTP")
                    };
                    //2.准备发送前的参数
                    xhr.open(type, url, true);
                    //3.执行发送动作
                    if(type == "get") {
                        xhr.send(null);
                    } else if(type == "post") {
                        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                        xhr.send(data);
                    };
                    //第四步:指定回调函数
                    xhr.onreadystatechange = function() {
                        if(this.readyState == 4) {
                            if(this.status == 200) {
                                funSusses(xhr.responseText)
                            } else {
                                funFailure(xhr.responseText)
                            }
                        }
                    };
    
                }

     10.浏览器版本判断

    这个为从网上收藏版本,复制的有点多

    <script language="JavaScript"> 
    <!-- 
    function getOs() 
    { 
    var OsObject = ""; 
    if(navigator.userAgent.indexOf("MSIE")>0) { 
    return "MSIE"; 
    } 
    if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
    return "Firefox"; 
    } 
    if(isSafari=navigator.userAgent.indexOf("Safari")>0) { 
    return "Safari"; 
    } 
    if(isCamino=navigator.userAgent.indexOf("Camino")>0){ 
    return "Camino"; 
    } 
    if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){ 
    return "Gecko"; 
    } 
    
    } 
    alert("您的浏览器类型为:"+getOs()); 
    --> 
    </script>
    View Code
  • 相关阅读:
    JMeter压力测试并发测试(入门篇)
    System.currentTimeMillis()的性能问题以及解决方法
    Java日期时间API系列4-----Jdk7及以前的日期时间类的线程安全问题【转】
    使用Apache Commons Chain
    Spring中的InitializingBean接口的使用[转]
    Hash环/一致性Hash原理【转】
    ASP.NET Core 进程内模型和进程外模式
    如何运行多个同名Windows服务实例
    WPF系列 —— 控件添加依赖属性
    WPF系列——简单绑定学习
  • 原文地址:https://www.cnblogs.com/yanbigfeg/p/9801970.html
Copyright © 2020-2023  润新知