js扩展

扩展

定义对象

var zj = zj || {};

字符串转json对象

/**
 * 字符串转json对象
 */
zj.toJson = function(result) {
    if (typeof result == "string") {
        return eval("(" + result + ")");
    } else {
        return result;
    }
}

格式化字符串

/**
 * @author 张剑 使用方法:zj.formatString('字符串{0}字符串{1}字符串','第一个变量','第二个变量');
 * 
 * @returns 格式化后的字符串
 */
zj.formatString = function(str) {
    for (var i = 0; i < arguments.length - 1; i++) {
        str = str.replace("{" + i + "}", arguments[i + 1]);
    }
    return str;
};

字符串转数组

/**
 * @author 张剑
 * 
 * 接收一个以逗号分割的字符串,返回List,list里每一项都是一个字符串
 * 
 * @returns list
 */
zj.stringToList = function(value) {
    if (typeof value == "object") {
        return value;
    } else if (value != undefined && value != '') {
        var values = [];
        console.info(value);
        var t = value.split(',');
        for (var i = 0; i < t.length; i++) {
            values.push('' + t[i]);/* 避免他将ID当成数字 */
        }
        console.info(values);
        return values;
    } else {
        return [];
    }
};

清空form表单

/**
 * 清空form表单
 */
zj.clearForm = function(form) {
    $(':input', form).each(function() {
        var type = this.type;
        var tag = this.tagName.toLowerCase();
        if (type == 'text' || type == 'password' || tag == 'textarea') {
            this.value = "";
        } else if (type == 'checkbox' || type == 'radio') {
            this.checked = false;
        } else if (tag == 'select') {
            this.selectedIndex = -1;
        }
    });
};

日期格式化

/**
 * 日期格式化
 * 
 * @param format
 * @returns
 */
Date.prototype.format = function(format) {
    var o = {
        "M+" : this.getMonth() + 1, // month
        "d+" : this.getDate(), // day
        "h+" : this.getHours(), // hour
        "m+" : this.getMinutes(), // minute
        "s+" : this.getSeconds(), // second
        "q+" : Math.floor((this.getMonth() + 3) / 3), // quarter
        "S" : this.getMilliseconds()
    }

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }

    for ( var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}

隐藏域中进行同步get提交

/**
 * 在当前页面创建隐藏iframe并提交
 */
zj.iframeGet = function(url) {
    var nowDate = new Date().getSeconds() + '';
    var iframe;
    try {
        iframe = document.createElement('<iframe name="' + nowDate + '">');
    } catch (ex) {
        iframe = document.createElement('iframe');
    }
    iframe.name = nowDate;
    iframe.width = 0;
    iframe.height = 0;
    iframe.marginHeight = 0;
    iframe.marginWidth = 0;
    document.body.appendChild(iframe);
    console.info(nowDate);
    window.open(url, nowDate);
    console.info(nowDate);
}

js进行post同步提交

/**
 * js进行post同步提交
 */
zj.post = function(URL, PARAMS) {
    var temp = document.createElement("form");
    temp.action = URL;
    temp.method = "post";
    temp.style.display = "none";
    for ( var x in PARAMS) {
        var opt = document.createElement("textarea");
        opt.name = x;
        opt.value = PARAMS[x];
        temp.appendChild(opt);
    }
    document.body.appendChild(temp);
    temp.submit();
}

获取字符串的分隔符之前部分

/**
 * 获取字符串的分隔符之前部分
 */
zj.getLeftStr = function(str, delimiter) {
    return str.substring(0, str.indexOf(delimiter));
}

获取浏览器信息

/**
 * 获取浏览器信息
 */
zj.getBoswerMsg = function() {
    var Sys = {};
    var ua = navigator.userAgent.toLowerCase();
    var s;
    var scan;
    (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : (s = ua
            .match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] : (s = ua
            .match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] : (s = ua
            .match(/opera.([\d.]+)/)) ? Sys.opera = s[1] : (s = ua
            .match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;

    // 以下进行测试

    if (Sys.ie) {
        scan = {
            "bowser" : "ie",
            "version" : zj.getLeftStr(Sys.ie, ".")
        };
    }
    if (Sys.firefox) {
        scan = {
            "bowser" : "firefox",
            "version" : zj.getLeftStr(Sys.firefox, ".")
        };
    }
    if (Sys.chrome) {
        scan = {
            "bowser" : "chrome",
            "version" : zj.getLeftStr(Sys.chrome, ".")
        };
    }
    if (Sys.opera) {
        scan = {
            "bowser" : "opera",
            "version" : zj.getLeftStr(Sys.opera, ".")
        };
    }
    if (Sys.safari) {
        scan = {
            "bowser" : "safari",
            "version" : zj.getLeftStr(Sys.safari, ".")
        };
    }
    console.info(scan);
    return scan;
}

格式化小数

zj.formatFloat = function(num, pos) {
    return Math.round(num * Math.pow(10, pos)) / Math.pow(10, pos);
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MatheMagician

美赛赛前思路整理建议

大家好,我是magic2728,上一篇文章(见公众号历史文章上一篇)我们介绍了美赛审题的相关内容,今天我们来完善一下关于赛前如何把知识整理清楚,以在比赛中能超常...

7430
来自专栏Java小白成长之路

第5次文章:关于IO流的基本操作

春节假期就要结束啦,很多小伙伴儿明天就开始上班了,祝各位小伙伴儿新的一年工作顺心,万事顺利哟!

8630
来自专栏MatheMagician

一个问题引发的统计学派之争

假设某市流行一种病,发病率是0.1% 。在某地的医院中有一个神医,特别擅长诊断该病。神医做出正确判断的概率是99%。(神医并不清楚发病率,做出正确判断的概率实在...

10420
来自专栏Java小白成长之路

容器、迭代器和泛型

关于迭代器的使用,一个容器的迭代器只能使用一次。但是老师上课教会了另一种方法,在构建类的时候,可以将自定义的迭代器进行封装为一个内部类,然后再构造相应的产生方法...

7730
来自专栏数据森麟

Python数据科学:决策树

在建树步骤中,首先选择最有解释力度的变量,接着对每个变量选择最优的分割点进行剪树。

11220
来自专栏IT大咖说

你是一个成熟的程序员了,是时候学习面向故障编程了

作为程序员,最大的噩梦,可能就是下班时间,当我正在开心的浪着,突然传来一阵急促的铃声,运维的同事说系统不行了,我必须马上上线帮忙抢救...... 之前还看过一个...

11120
来自专栏数据森麟

掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)

本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bokeh 交互式应用程序的过程,内容循序渐进且具有很高的实用性。本文共有两万字左右,属于纯干...

9630
来自专栏MatheMagician

如何优雅地给扑克牌排序?(二)——排序算法的一次工程实践

在上一篇文章中,我们一起探讨了排序类问题的数学本质,其问题的真实适用范围以及由此定义下能够证明有效的两类排序算法流程,分析了他们的适用范围和时间,空间上的复杂度...

10520
来自专栏数据森麟

漫画:什么是中台?

在传统IT企业,项目的物理结构是什么样的呢?无论项目内部的如何复杂,都可分为“前台”和“后台”这两部分。

6810
来自专栏MatheMagician

如何优雅地给扑克牌排序?(一)——排序算法的数学本质

不知平常各位打牌时候是否遇到过这样的场景:四人打完升级后,面对两幅混乱的扑克牌,走了一人后想打斗地主,现在要把他们分出一副来,于是打算先排序后分离,然后各种花色...

14920

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励