zoukankan      html  css  js  c++  java
  • JS常用方法【笔记整理】持续整理中

    //记录一下前端开发中 JS常用的方法等,持续收集整理中

    ----------------------------------------------------------

     1 //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
     2 function banBackSpace(e) {
     3     var ev = e || window.event;//获取event对象   
     4     var obj = ev.target || ev.srcElement;//获取事件源   
     5     var t = obj.type || obj.getAttribute('type');//获取事件源类型  
     6     //获取作为判断条件的事件类型
     7     var vReadOnly = obj.getAttribute('readonly');
     8     //处理null值情况
     9     vReadOnly = (vReadOnly == "") ? false : vReadOnly;
    10     //当敲Backspace键时,事件源类型为密码或单行、多行文本的,
    11     //并且readonly属性为true或enabled属性为false的,则退格键失效
    12     var flag1 = (ev.keyCode == 8 && (t=="password"||t == "text" || t == "textarea")&&vReadOnly=="readonly") ? true : false;
    13     //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
    14     var flag2 = (ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")? true : false;
    15     //判断
    16     if (flag2) { }
    17     if (flag1) {
    18         return false;
    19     }
    20 }
     1 //处理低版本IE浏览器不支持indexof方法
     2 if (!Array.prototype.indexOf) {
     3     Array.prototype.indexOf = function (elt /*, from*/) {
     4         var len = this.length >>> 0;
     5 
     6         var from = Number(arguments[1]) || 0;
     7         from = (from < 0)
     8              ? Math.ceil(from)
     9              : Math.floor(from);
    10         if (from < 0)
    11             from += len;
    12 
    13         for (; from < len; from++) {
    14             if (from in this &&
    15                 this[from] === elt)
    16                 return from;
    17         }
    18         return -1;
    19     };
    20 }
    21 
    22 Array.prototype.lastIndexOf = function (item) {
    23     var len = this.length;
    24     for (var i = len; i >= 0; i--) {
    25         if (this[i] === item) {
    26             return len - i;
    27         }
    28     }
    29     return -1;
    30 }
     1 // 打开一个新窗体
      //参数说明:
      //theURL 打开新窗体的URL
      //winName 打开新窗体的名称
      // Awidth /Aheight 设定打开新窗体的 宽度/高度
      //flag 1,2,3,4,5 分别匹配下面5中情况
    2 function openWindow(theURL, winName, Awidth, Aheight, flag) { //v2.0 3 var closeZLwindow; 4 switch (flag) { 5 case 1: 6 { //不能放大缩小,没有滚动条 7 closeZLwindow = window.open(theURL, winName, 'width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2); 8 break; 9 } 10 case 2: 11 { //不能放大缩小,但有滚动条 12 closeZLwindow = window.open(theURL, winName, 'scrollbars=yes,width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2); 13 break; 14 } 15 case 3: 16 { //全屏 17 closeZLwindow = window.open(theURL, winName, 'fullscreen=1,width=' + Awidth + ',height=' + Aheight + ',left=0,top=0'); 18 break; 19 } 20 case 4: 21 { 22 closeZLwindow = window.open(theURL, winName, 'width=' + screen.width + ',menubar=yes,status=yes,location=yes,menubar=yes,toolbar=yes,resizable=yes,scrollbars=yes,left=0,top=0,height=' + screen.height); 23 break; 24 } 25 default: 26 { //可以放大缩小,而且有滚动条 27 closeZLwindow = window.open(theURL, winName, 'resizable=yes, scrollbars=yes,width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2); 28 break; 29 } 30 } 31 return closeZLwindow; 32 }
     1 //检测是否为中文编码
     2 function isChineseInString(str) {
     3     for (var i = 0; i < str.length; i++) {
     4         var ch = str.charCodeAt(i);
     5         if (0x4e00 < ch && ch < 0x9fff) {
     6             return true;//是中文
     7         }
     8         else {
     9             return false;//非中文
    10         }
    11     }
    12 }
    1 //防止SQL注入//输入敏感字符提示
    2 function AntiSqlValid(oField) {
    3     re = /select|update|delete|exec|count|’|"|=|;|>|<|%/i;
    4     if (re.test(oField.value)) {
    5         alert("请您不要在参数中输入特殊字符和SQL关键字!"); //注意中文乱码
    6         return false;
    7     }
    8 }
     1 //四则运算方法
     2 
     3 //除法函数,用来得到精确的除法结果
     4 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
     5 //调用:accDiv(arg1,arg2)
     6 //返回值:arg1除以arg2的精确结果
     7 function accDiv(arg1, arg2) {
     8     var t1 = 0, t2 = 0, r1, r2;
     9     try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
    10     try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
    11     with (Math) {
    12         r1 = Number(arg1.toString().replace(".", ""));
    13         r2 = Number(arg2.toString().replace(".", ""));
    14         return (r1 / r2) * pow(10, t2 - t1);
    15     }
    16 }
    17 //给Number类型增加一个div方法,调用起来更加方便。
    18 Number.prototype.div = function (arg) {
    19     return accDiv(this, arg);
    20 };
    21 //乘法函数,用来得到精确的乘法结果
    22 //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
    23 //调用:accMul(arg1,arg2)
    24 //返回值:arg1乘以arg2的精确结果
    25 function accMul(arg1, arg2) {
    26     var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
    27     try { m += s1.split(".")[1].length } catch (e) { }
    28     try { m += s2.split(".")[1].length } catch (e) { }
    29     return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
    30 }
    31 //给Number类型增加一个mul方法,调用起来更加方便。
    32 Number.prototype.mul = function (arg) {
    33     return accMul(arg, this);
    34 };
    35 //加法函数,用来得到精确的加法结果
    36 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
    37 //调用:accAdd(arg1,arg2)
    38 //返回值:arg1加上arg2的精确结果
    39 function accAdd(arg1, arg2) {
    40     var r1, r2, m;
    41     try { r1 = arg1.toString().split(".")[1].length; } catch (e) { r1 = 0; }
    42     try { r2 = arg2.toString().split(".")[1].length; } catch (e) { r2 = 0; }
    43     m = Math.pow(10, Math.max(r1, r2));
    44     return (arg1 * m + arg2 * m) / m;
    45 }
    46 //给Number类型增加一个add方法,调用起来更加方便。
    47 Number.prototype.add = function (arg) {
    48     return accAdd(arg, this);
    49 };
    50 //减法函数
    51 function accSub(arg1, arg2) {
    52     var r1, r2, m, n;
    53     try {
    54         r1 = arg1.toString().split(".")[1].length;
    55     } catch (e) {
    56         r1 = 0;
    57     }
    58     try {
    59         r2 = arg2.toString().split(".")[1].length;
    60     } catch (e) {
    61         r2 = 0;
    62     }
    63     m = Math.pow(10, Math.max(r1, r2));
    64     //动态控制精度长度
    65     n = (r1 >= r2) ? r1 : r2;
    66     return ((arg2 * m - arg1 * m) / m).toFixed(n);
    67 }
    68 ///给number类增加一个sub方法,调用起来更加方便
    69 Number.prototype.sub = function (arg) {
    70     return accSub(arg, this);
    71 };
     1 //数字四舍五入到小数点后第几位的方法
     2 Number.prototype.toFixed = function (d) {
     3     var s = this + ""; if (!d) d = 0;
     4     if (s.indexOf(".") == -1) s += "."; s += new Array(d + 1).join("0");
     5     if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) {
     6         s = "0" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true;
     7         if (a == d + 2) {
     8             a = s.match(/\d/g); if (parseInt(a[a.length - 1]) > 4) {
     9                 for (var i = a.length - 2; i >= 0; i--) {
    10                     a[i] = parseInt(a[i]) + 1;
    11                     if (a[i] == 10) { a[i] = 0; b = i != 1; } else break;
    12                 }
    13             }
    14             s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2");
    15         } if (b) s = s.substr(1); return (pm + s).replace(/\.$/, "");
    16     } return this + "";
    17 };
     1 //* 根据长度截取先使用字符串,超长部分追加…
     2 //* str 对象字符串
     3 //* len 目标字节长度
     4 //* 返回值: 处理结果字符串
     5 function cutString(str, len) {
     6     //length属性读出来的汉字长度为1
     7     if (str.length * 2 <= len) {
     8         return str;
     9     }
    10     var strlen = 0;
    11     var s = "";
    12     for (var i = 0; i < str.length; i++) {
    13         s = s + str.charAt(i);
    14         if (str.charCodeAt(i) > 128) {
    15             strlen = strlen + 2;
    16             if (strlen >= len) {
    17                 return s.substring(0, s.length - 1) + "...";
    18             }
    19         } else {
    20             strlen = strlen + 1;
    21             if (strlen >= len) {
    22                 return s.substring(0, s.length - 2) + "...";
    23             }
    24         }
    25     }
    26     return s;
    27 }
     1 //去掉数组中重复的元素
     2 function unique(arr) {
     3     var result = [], hash = {};
     4     for (var i = 0, elem; (elem = arr[i]) != null; i++) {
     5         if (!hash[elem]) {
     6             result.push(elem);
     7             hash[elem] = true;
     8         }
     9     }
    10     return result;
    11 }
    1 //打开弹出层时禁用滚动条
    2 function DisableScrollBar() {
    3     $("body").css({ overflow: "hidden" });
    4 }
    5 
    6 //关闭弹出层时激活滚动条
    7 function ActivateScrollBar() {
    8     $("body").css({ overflow: "auto" });
    9 }
     1 //输入框(只能输入整数)
     2 function limitNum(e, LimitNumber) {
     3     if (e.value.length == 1) {
     4         e.value = e.value.replace(/[^0-9]/g, '');
     5     }
     6     else {
     7         e.value = e.value.replace(/[^\d.]/g, '');
     8     }
     9     if (parseInt(e.value) > LimitNumber) { e.value = LimitNumber; }
    10 }
  • 相关阅读:
    windows快捷键十八式(win10)
    解决滚动条突然出现导致的页面错位问题
    用命令行撤销工作区的所有更改(修改文件&&新增文件)
    用animation的steps属性制作帧动画
    配置Gitlab pages和Gitlab CI
    zookeeper中的分布式一致性协议
    kafka消息的处理机制(五)
    Paxos算法原理
    kafka同步异步消费和消息的偏移量(四)
    kafka客户端和服务端开发(三)
  • 原文地址:https://www.cnblogs.com/Hizy/p/6758962.html
Copyright © 2011-2022 走看看