JS的一些技巧


1.关于日期转换格式

2.获取选中文字

3.复制

4.关于IE 浏览器判断问题

5.冒泡排序

6.快速排序

7.复制

8.复制


<h3 id="1">1.关于日期转换格式</h3>


    var formatDateTime = function(date) {
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? ('0' + m) : m;
        var d = date.getDate();
        d = d < 10 ? ('0' + d) : d;
        var h = date.getHours();
        var minute = date.getMinutes();
        minute = minute < 10 ? ('0' + minute) : minute;
        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
    };

<h3 id="2">2.获取选中文字</h3>


  document.selection.createRange() 

根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ControlRange 对象。


<h3 id="3">3.复制</h3>


    function copyText(id) {
        //获取节点
        var n = $("#" + id);
        if (n == null) {
            //节点为空直接返回
            return;
        }
        try {
            //取得浏览器的userAgent字符串
            var userAgent = navigator.userAgent;
            //判断Ie
            if (userAgent.indexOf("MSIE") > 0) {
                window.clipboardData.setData('text', n.val());
                var copyContent = window.clipboardData.getData("text");
                //判断复制成功,ie复制可选择是否允许
                if (copyContent == n.val()) {
                    alert("复制成功。现在您可以粘贴(Ctrl+v)到Blog 或BBS中了。");
                    return;
                }
            } else {
                n.select();
                therange = void 0;
                if (n.createTextRange) therange = n.createTextRange();
                therange = therange ? therange : document;
                if (therange.execCommand("Copy")) {
                    alert("复制成功。现在您可以粘贴(Ctrl+v)到Blog 或BBS中了。");
                    return;
                }
            }
        } catch (i) {}
        alert("您使用的浏览器不支持此复制功能,请使用Ctrl+C或鼠标右键。");
    }

<h3 id="4">4.关于IE 浏览器判断问题</h3>


function isIE() {
    var Sys = {};
    var ua = navigator.userAgent.toLowerCase();
    var s;
    (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1]:
        (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 (isIE && (window.navigator.userProfile + '') == 'null') {
        alert("本网站请使用360极速模式浏览");
    } else
    if (window.navigator.appName.indexOf("Microsoft") != -1) {
        alert("本网站不支持IE浏览器,建议使用谷歌浏览器");
        window.location.href = "http://www.googlechromer.cn/";
    } else
    if (Sys.ie) {
        alert("本网站不支持IE浏览器,建议使用谷歌浏览器");
        window.location.href = "http://www.googlechromer.cn/";
    }
}
isIE();

<h3 id="5">5.冒泡排序</h3>


每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置 要实现上述规则需要用到两层for循环,外层从第一个数到倒数第二个数,内层从外层的后面一个数到最后一个数

缺点是比较次数多,效率较低。
    function bubbleSort(arr) {
        var len = arr.length,
            j;
        var temp;
        while (len > 0) {
            for (j = 0; j < len - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
            i--;
        }
        return arr;
    }

<h3 id="6">6.快速排序</h3>


先找到一个基准点(一般指数组的中部),然后数组被该基准点分为两部分,依次与该基准点数据比较,如果比它小,放左边;反之,放右边。左右分别用一个空数组去存储比较后的数据。最后递归执行上述操作,直到数组长度<=1;

缺点是需要另外声明两个数组,浪费了内存空间资源。

    var times = 0;
    var quickSort = function(arr) {
        //如果数组长度小于等于1无需判断直接返回即可
        if (arr.length <= 1) {
            return arr;
        }
        var midIndex = Math.floor(arr.length / 2); //取基准点
        var midIndexVal = arr.splice(midIndex, 1); //取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1]
        var left = []; //存放比基准点小的数组
        var right = []; //存放比基准点大的数组
        //遍历数组,进行判断分配
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < midIndexVal) {
                left.push(arr[i]); //比基准点小的放在左边数组
            } else {
                right.push(arr[i]); //比基准点大的放在右边数组
            }
            console.log("第" + (++times) + "次排序后:" + arr);
        }
        //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1;
        return quickSort(left).concat(midIndexVal, quickSort(right));
    };
    console.log(quickSort(arr));


<h3 id="7">7.字符串操作</h3>


1. 切割字符串

htmlUrl
var url = htmlUrl.split("/");

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

推荐阅读更多精彩内容