JavaScript常用代码片段整理

1. 批量替换方法,批量过滤特殊字符,通常用在通过后的各种编辑器添加的内容在App上编辑上使用

  • 使用方法:ReCont(Content,["<br>", "<br/>", "<p>", "</p>"])
  • @param {Object} strCont 要替换的内容
  • @param {Object} array 内容里需要替换的字符串数组
function ReEditer(strCont, array) {
    for (var i in array) {
        var item = array[i];
        //alert(item);
        var reg = new RegExp("\\" + item, "g");
        switch(item) {
            case '<br>':
                strCont = strCont.replace(reg, "\n");
                break;
            case '<br/>':
                strCont = strCont.replace(reg, "\n");
                break;
            case '<p>':
                strCont = strCont.replace(reg, "");
                break;
            case '</p>':
                strCont = strCont.replace(reg, "\n");
                break;
            case '&nbsp;':
                strCont = strCont.replace(reg, "\ ");
                break;
            default:
                strCont = strCont.replace(reg, "");
                break;
        }
    }
    return strCont;
}

2. 获取所有选中的checkbox值

  • 返回值是以逗号分隔的字符串,如:2562,2568,6532,5268 如果没有选择返回空
function getCheckBox() {
    var chk_value = [];
    var stringValue = "";
    $('input[name="grade"]:checked').each(function() {
        chk_value.push($(this).val());
    });
    if (chk_value.length == 0)
        return "";
    else {
        for (var i in chk_value) {
            stringValue += chk_value[i] + ',';
        }
        stringValue=stringValue.substring(0, stringValue.length - 1); //去掉最后一个逗号
    }
    return stringValue;
}

3. 生成唯一字符串

function NewGuid() {
    function S4() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }

    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}

4. 拼接图片附件,在图片路径前加上当前域名做为全路径

  • @param {Object} attachments 以逗号分隔的附件字符串
function pathString(attachments) {
    if (attachments != '' && attachments != '&nbsp;' && attachments != null) {
        var pathStr = '';
        var attArr = attachments.split(',');
        for (var i in attArr) {
            pathStr += host + attArr[i] + ",";
        }
        return pathStr.substring(0, pathStr.length - 1);
    } else {
        return '';
    }
}

5. 把在textarea的换行符和空格符替换为相应的html表达字符

  • @param {Object} strCont
  • @param {Object} array
function Retextarea(strCont, array) {
    for (var i in array) {
        var item = array[i];
        var reg = new RegExp("\\" + item, "g");
        switch(item) {
            case '\r\n':
                strCont = strCont.replace(reg, "<br/>");
                break;
            case '\ ':
                strCont = strCont.replace(reg, "&nbsp;");
                break;
            default:
                strCont = strCont.replace(reg, "");
                break;
        }
    }
    return strCont;
}

6. 对Date的扩展,将 Date 转化为指定格式的String

  • 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
  • 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
  • 例子:
 (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
 (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (fmt) { //author: meizz 
    var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "h+": this.getHours(), //小时 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

7. js截取字符串,中英文都能用

  • @param str:需要截取的字符串
  • @param len: 需要截取的长度
function cutstr(str, len) {
    var str_length = 0;
    var str_len = 0;
    str_cut = new String();
    str_len = str.length;
    for (var i = 0; i < str_len; i++) {
        a = str.charAt(i);
        str_length++;
        if (escape(a).length > 4) {
            //中文字符的长度经编码之后大于4
            str_length++;
        }
        str_cut = str_cut.concat(a);
        if (str_length >= len) {
            str_cut = str_cut.concat("...");
            return str_cut;
        }
    }
    //如果给定字符串小于指定长度,则返回源字符串;
    if (str_length < len) {
        return str;
    }
}

8. JQuery / js判断复选框是否选中状态

//JQuery:

var $isChecked = $("#id").is(":checked");

alert($isChecked);

//JS:

var $id = document.getElementById("id");

alert($id.checked);

//Notes:

//JQuery中,is函数里的必须要有冒号,否则不见效;

//JS中,必须调用checked 即>>> .checked

9. 把时间戳转换为当前日期

function ToTime(timestamp) {
    var newDate = new Date();
    newDate.setTime(timestamp);
    return formatDate(newDate);
}

10. 把时间转换为想要的格式

function formatDate(dateTimeStamp) {
    var year = dateTimeStamp.getFullYear();
    var month = dateTimeStamp.getMonth() + 1;
    var date = dateTimeStamp.getDate();
    var hour = dateTimeStamp.getHours();
    var minute = dateTimeStamp.getMinutes();
    var second = dateTimeStamp.getSeconds();
    //今天的时间戳
    var p_minute = 1000 * 60;
    var p_hour = p_minute * 60;
    var p_day = p_hour * 24;
    var p_month = p_day * 30;
    var nowtTimeStamp = new Date().getTime();
    var diffValue = nowtTimeStamp - dateTimeStamp;
    var monthC = diffValue / p_month;
    var weekC = diffValue / (7 * p_day);
    var dayC = diffValue / p_day;
    var hourC = diffValue / p_hour;
    var minC = diffValue / p_minute;
    //现在的时间
    var dateN = new Date();
    var hourD = hourC - dateN.getHours();
    var dayD = dayC - dateN.getDate();
    //alert(dayC+','+monthC);

    if (hourD < 0) {
        result = hour + ":" + minute;
    } else if (hourD > 0 && hourD < 24) {
        result = "昨天 " + hour + ":" + minute;
    } else if (dayC > 2 && monthC < 12) {
        //result = month + "月" + date + "日   " + hour + ":" + minute;
        result = month + "-" + date + " " + hour + ":" + minute;
    } else {
        //result = year + "年" + month + "月" + date + "日   " + hour + ":" + minute;
        //result = month + "月" + date + "日   " + hour + ":" + minute;
        result = month + "-" + date + " " + hour + ":" + minute;
    }
    return result;
}

11. js Replace全部替换字符 用法.

var r= "1\n2\n3\n";
//将字母\n替换成分号
alert(r.replace(/\n/g, ";"));

// 结果:1;2;3; replace 的第一个参数可以是正则表达式,/g标识全文匹配。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,055评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 我以为我能够做到不后悔,轻松快乐的样子,我以为离开是有更好的选择,生活也会好的。但是才刚刚开始我觉得我已经输了。在...
    红枫叶之阅读 134评论 2 3
  • Which Treats of Castles in the Air, and Other Matters Wor...
    姜小饼阅读 322评论 0 0
  • 你对自己,诚心几许?(wm197049) 人都是自私的。原先可能是不好意思说出来,要么明白说出来不合适。现在说得直...
    阿尚青子自由写作人阅读 302评论 0 2