JS的一些技巧

<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("/");

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏佳爷的后花媛

前端面试题整理

两栏布局是主内容区为主,左(右)侧有一栏,(将侧边区块<aside>域浮动,<aside>浮动后覆盖绿色<main>, 再将<main> overflow:au...

4472
来自专栏hrscy

iOS 9 Storyboard 教程(一下)

你可以直接从storyboard编辑器中,使用原型cell你可以很容易的为你的tableViewCell设计一套自定义的布局.

5072
来自专栏Golang语言社区

从web图片裁剪出发:了解H5中的Blob

刚开始做前端的时候,有个功能卡住我了,就是裁剪并上传头像。当时两个方案摆在我面前,一个是flash,我不会。另一个是通过iframe上传图片,然后再上传坐标由后...

5207
来自专栏XAI

ZeroClipboard实现多个浏览器兼容的复制文本到剪贴板的功能

ZeroClipboard实现多个浏览器兼容的复制文本到剪贴板的功能 本人在项目中使用的js版本。为了方便大家下载。直接粘贴代码给大家看。版本是1.2.0 /*...

2797
来自专栏冰霜之地

关于IB_DESIGNABLE / IBInspectable的那些需要注意的事

IB_DESIGNABLE / IBInspectable 这两个关键字是在WWDC 2014年"What's New in Interface Builder...

1603
来自专栏移动开发之家

Flutter完整开发实战详解(一、Dart语言和Flutter基础)

 在如今的 Fultter 大潮下,本系列是让你看完会安心的文章。本系列将完整讲述:如何快速从0开发一个完整的 Flutter APP,配套高完成度 Flut...

2432
来自专栏青玉伏案

iOS开发之窥探UICollectionViewController(一) -- Ready Your CollectionViewController

之前用CollectionViewController只是皮毛,一些iOS从入门到精通的书上也是泛泛而谈。这几天好好的搞了搞苹果的开发文档上Collection...

2016
来自专栏python学习路

六、BeautifulSoup4------自动登录网站(手动版)

每天一个小实例:(按照教学视频上自动登录的网站,很容易就成功了。自已练习登录别的网站,问题不断) 这个自己分析登录boss直聘。我用了一下午的时间,而且还是手动...

5515
来自专栏小灰灰

Java 实现 markdown转Image

markdown 转 image 前段时间实现了长图文生成的基本功能,然后想了下能否有个进阶版,直接将markdown生成渲染后的图片呢? 思路 有不少的库...

3315
来自专栏coding

django2实战3.模型的增删改查使用交互shell添加数据修改数据查询数据删除数据

django对数据的操作采用的是ORM模式,即将数据库的增删改查抽象成对象方法的调用,开发人员只需要调用相关的方法,而不需要写sql语句。

3702

扫码关注云+社区

领取腾讯云代金券