工作中常用js的汇总

一、javascript 中防止重复点击、防止点击过快

防止重复点击可以添加一个开关,让这个开关默认为 true,第一次点击将其变为 false,点击事件的执行需要判断这个开关是否为 true,为 true 执行,false 不执行。例子如下:

var isclick= true;
function click(){
  if(isclick){
    isclick = false;
    //下面添加需要执行的事件
    ...
  }

如果只是防止点击过快,还可以设置定时器,在一定时间后,自动将开关变为 true,下面例子就是在 500 毫秒后,开关自动变为 true。

var isclick= true;
function click(){
  if(isclick){
    isclick= false;
    //下面添加需要执行的事件
      ...

    //定时器
    setTimeout(function(){
      isclick = true;
    }, 500);
  }

二、jquery 实现 60 秒倒计时

方法一:

 var time = 60;
//倒计时
function getRandomCode() {
  if (time === 0) {
    time = 60;
    return;
  } else {
    time--;
    $('#time i').text(time);
  }
  setTimeout(function() {
    getRandomCode();
  },1000);

方法二:

var timeClock;
function sendCode() {
  var timer_num = 60;
  timeClock=setInterval(function(){
    timer_num--;
    $('.clock').html(timer_num);

    if (timer_num == 0) {
      clearInterval(timeClock);
      $('.clock').html(60);
    }
  },1000)

三、获取 URL 传输参数(支持中文)

function getQueryString(name) {
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  var r = window.location.search.substr(1).match(reg);
  if (r != null) {
    return decodeURI(r[2]);
  }
  return null;
}
//调用方法
GetQueryString("参数名")

四、Jq 获取 from 表单数据

function getFromData(id) {
  if (id == undefined) {
    id = "form"
  }
  var data = {};
  var t = $(id).serializeArray();
  $.each(t, function() {
    data[name = this.name] = this.value;
  });
  return data;
}

调用方法:

var userData. = getFromData();
userData.表单name值 //获取值

五、设置,获取,清空 Cookie

// 设置cookies

function setCookie(name, value) {
  var exp = new Date();
  exp.setTime(exp.getTime() + 60 * 60 * 1000);
  document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
}

//读取cookies
function getCookie(name) {
  var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");

  if (arr = document.cookie.match(reg))

    return unescape(arr[2]);
  else
    return null;
}

// 清楚所有cookies
function clearCookie() {
  var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
  if (keys) {
    for (var i = keys.length; i--;) {
      document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString(); //清除当前域名下的,例如:m.kevis.com
      document.cookie = keys[i] + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString(); //清除当前域名下的,例如 .m.kevis.com
      document.cookie = keys[i] + '=0;path=/;domain=kevis.com;expires=' + new Date(0).toUTCString(); //清除一级域名下的或指定的,例如 .kevis.com
    }
  }
}

六、js 转换时间戳-转换成 yyyy-MM-dd HH:mm:ss

//时间戳转换方法  date:时间戳数字
function formatDate(date) {
 var date = new Date(date);
 var YY = date.getFullYear() + '-';
 var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
 var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
 var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
 var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
 var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
 return YY + MM + DD +" "+hh + mm + ss;
}

七、canvas 图片下载(兼容各浏览器)

// 保存成png格式的图片
  document.getElementById("save").onclick = function () {
    var canvas = document.getElementById("canvas");
    if (window.navigator.msSaveOrOpenBlob) {//ie浏览器
      var imgData = canvas.msToBlob();
      var blobObj = new Blob([imgData]);
      window.navigator.msSaveOrOpenBlob(blobObj, "专家认证二维码.png");
    } else {//谷歌火狐浏览器
      downLoad(canvas.toDataURL("image/png"));
    }
  }

  // 下载图片
  function downLoad(url) {
    var oA = document.createElement("a");
    oA.download = '专家认证二维码';// 设置下载的文件名,默认是'下载'
    oA.href = url;
    oA.className = "qrcode"
    document.body.appendChild(oA);
    oA.click();
    oA.remove(); // 下载之后把创建的元素删除
  }

八、数字,金额格式互转正则表达式

<input type="text" placeholder="请输入" oninput = "checkInput(this)">

input 输入实时判断输入为金额格式

  function checkInput(obj) {
    var t = obj.value.charAt(0);
    obj.value = obj.value.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
    obj.value = obj.value.replace(/^[0]+[0-9]*$/gi, ""); //第一位数字不能为0
    obj.value = obj.value.replace(/^\./g, ""); //验证第一个字符是数字而不是.
    obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
    obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
    obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
    if (t == '-') {
      obj.value = '-' + obj.value;
    }
  }

数字转金额格式,保留两位小数点 例:将 1234567 转换为 1,234,567.00

 //s是数字,n是小数点位数
  function fmoney(s, n) {
  n = n > 0 && n <= 20 ? n : 2;
  s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
  var l = s.split(".")[0].split("").reverse(),
  r = s.split(".")[1];
  t = "";
  for (i = 0; i < l.length; i++) {
    t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
  }
  return t.split("").reverse().join("") + "." + r;
}

金额格式转数字 例:将 1,234,567.00 转换为 1234567.00

function moneyToNumValue(val) {
  var num = val.trim();
  var ss = num.toString();
  if (ss.length == 0) {
    return "0";
  }
  return ss.replace(/,/g, "");
}

九、canvas 图片背景设置为白色或透明

 var canvas = document.getElementById("canvas");
 var imageData = canvas.getContext("2d").getImageData(0, 0, canvas.width, canvas.height);
    for (var i = 0; i < imageData.data.length; i += 4) {
      // 当该像素是透明的,则设置成白色
      if (imageData.data[i + 3] == 0) {
        imageData.data[i] = 255;
        imageData.data[i + 1] = 255;
        imageData.data[i + 2] = 255;
        imageData.data[i + 3] = 255;
      }
    }
    canvas.getContext("2d").putImageData(imageData, 0, 0);
    var img = canvas.toDataURL("image/jpeg");
    img = img.substring(img.indexOf(',') + 1);
    for (var i = 0; i < imageData.data.length; i += 4) {
      // 当该像素是白色的,则设置成透明
      if (imageData.data[i] == 255) {
        imageData.data[i] = 0;
        imageData.data[i + 1] = 0;
        imageData.data[i + 2] = 0;
        imageData.data[i + 3] = 0;
      }
    }
    canvas.getContext("2d").putImageData(imageData, 0, 0);

十、常用的正则表达式

//手机号正则
var reg = /^1[0-9]{10}$/;

//身份证号(18位)正则
var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;

// 邮箱正则
var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;

//调用方法
!reg.test(phone) //表示不符合手机号正则表达式

十一、JavaScript 获取完整当前域名

window.location.protocol+"//"+window.location.host; //  返回https://mp.csdn.net
window.location.host; //返回url 的主机部分,例如:mp.csdn.net
window.location.hostname; //返回mp.csdn.net
window.location.href; //返回整个url字符串(在浏览器中就是完整的地址栏)
window.location.pathname; //返回/a/index.php或者/index.php
window.location.protocol; //返回url 的协议部分,例如: http:,ftp:,maito:等等。
window.location.port //url 的端口部分,如果采用默认的80端口,那么返回值并不是默认的80而是空字符

十二、base64 图片压缩

//压缩base64方法
function dealImage(base64, w, callback) {
 var newImage = new Image();
 var quality = 0.6; //压缩系数0-1之间
 newImage.src = base64;
 newImage.setAttribute("crossOrigin", 'Anonymous'); //url为外域时需要
 var imgWidth, imgHeight;
 newImage.onload = function() {
 imgWidth = this.width;
 imgHeight = this.height;
 var canvas = document.createElement("canvas");
 var ctx = canvas.getContext("2d");
 if (Math.max(imgWidth, imgHeight) > w) {
  if (imgWidth > imgHeight) {
  canvas.width = w;
  canvas.height = w * imgHeight / imgWidth;
  } else {
  canvas.height = w;
  canvas.width = w * imgWidth / imgHeight;
  }
 } else {
  canvas.width = imgWidth;
  canvas.height = imgHeight;
  quality = 0.6;
 }
 ctx.clearRect(0, 0, canvas.width, canvas.height);
 ctx.drawImage(this, 0, 0, canvas.width, canvas.height);
 var base64 = canvas.toDataURL("image/jpeg", quality); //压缩语句
 callback(base64); //必须通过回调函数返回,否则无法及时拿到该值
 }
}

以上就是工作中常用js的汇总的详细内容,更多关于常用js的汇总的资料请关注我们其它相关文章!

(0)

相关推荐

  • JavaScript常用工具函数大全

    本文实例总结了JavaScript常用工具函数.分享给大家供大家参考,具体如下: 为元素添加on方法 Element.prototype.on = Element.prototype.addEventListener; NodeList.prototype.on = function (event, fn) {. []['forEach'].call(this, function (el) { el.on(event, fn); }); return this; }; 为元素添加trigger方

  • JS操作json对象key、value的常用方法分析

    本文实例讲述了JS操作json对象key.value的常用方法.分享给大家供大家参考,具体如下: 一.定义JSON对象 // 首先定义一个json对象,对象以"{"(左括号)开始,"}"(右括号)结束 // 花括号内为键.值对 键必须用引号括起来,值若不是字符串则不必 var jsonObj = { "创维电视" : 50, "卡萨帝北京" : 40, "家电" : 40, "松下" :

  • JS数据类型判断的几种常用方法

    JavaScript 中常见数据类型有Number.String.Boolean.Object.Array.Json.Function.Date.RegExp.Error.undefined.Null等十几种.ES6还有新增的数据类型有Symbol.Set.Map等.在实际应用中,我们经常需要判断数据类型,现在我归纳几种方法,希望对大家有所帮助. typeof 判断(最常用) typeof 是 JS 提供的一个运算符,专门用来检测一个变量的类型 . typeof 有2种使用方式:typeof(表

  • JS删除数组指定值常用方法详解

    一. 删除数组中所有指定值 先看一种危险的方式: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> window.onload = function() { var arr = [

  • JS数组的常用10种方法详解

    数组在JavaScript中经常使用,如何对数组进行增删改非常重要,下面为数组的常用方法: 在数组末尾插入元素 arr.push(value),在数组的末尾添加一个或多个元素,并返回数组的新长度. 例如: let arr=[1,2,3,4,5] var longth=arr.push(6,7); console.log(arr, longth); 数组的arr的值变为arr[1,2,3,4,5,6,7]; length接收返回的是修改后数组的长度7; 删除数组末尾的元素 arr.pop()删除索

  • JavaScript读取本地文件常用方法流程解析

    出于安全和隐私的原因,web 应用程序不能直接访问用户设备上的文件.如果需要读取一个或多个本地文件,可以通过使用input file和FileReader来实现.在这篇文章中,我们将通过一些例子来看看它是如何工作的. 文件操作的流程 获取文件 由于浏览器中的 JS 无法从用户的设备访问本地文件,我们需要为用户提供一种方法来选择一个或多个文件供我们使用.这可以通过文件选择器<input type='fule' />来完成. <input type="file">

  • JavaScript常用工具函数库汇总

    对象或数组的深拷贝 /** * 对象或数组的深拷贝 * @param {*} cloneObj 被克隆的对象 * @param {*} targetObj 克隆的目标对象 * @param {*} isOverride 若属性重复,是否覆盖被克隆对象的属性 */ function deepClone(cloneObj, targetObj, isOverride = true) { const _toString = Object.prototype.toString if (_toString

  • 国内常用的js类库大全(CDN公共库)

    国内站点经常使用的一些 CDN 静态资源公共库加速服务 web开发人员们的福利来了..旨在为大家提供更快很多其它更好的静态资源库的CDN载入库方案! CDN公共库是指将经常使用的JS库存放在CDN节点,以方便广大开发人员直接调用. 与将JS库存放在server单机上相比,CDN公共库更加稳定.快速.一 般的CDN公共库都会包括全球全部最流行的开源JavaScript.JQuery等库.你能够在自己的网页上直接通过script标记引用这些资源.这样做不仅能够为您 节省流量.还能通过CDN加速.获得

  • JavaScript常用8种数组去重代码实例

    在我们学习和使用JavaScript的中,会经常使用到数组的去重,接下来的内容,来给大家分享一下,我们在开发过程中,常用到的数组去重方法,这些方法都是有在实战中真实实践过的,非常值得大家学习和收藏,我们一起来看看都有哪些方法吧! 1.利用对象的属性 使用对象属性不重名的特性. var arr = ['qiang','ming','tao','li','liang','you','qiang','tao']; console.time("nonredundant1"); var nonr

  • JS使用正则表达式实现常用的表单验证功能分析

    本文实例讲述了JS使用正则表达式实现常用的表单验证功能.分享给大家供大家参考,具体如下: 表单验证是一个网站或应用的重点,一条合适的错误提示不仅可以减少无效信息录入,更会给用户留下良好的使用体验.但表单设计千差万别,用户输入更不可控.一方面,我们要减少出错提示(这会引起用户反感),而另一方面,我们则希望得到足够多的有效信息.鱼和熊掌如何兼得? 写一个简单的表单验证:https://www.jb51.net/article/185782.htm 从Google中,我们可以找到一些实用的方法: 设计

  • JavaScript交换变量的常用方法小结【4种方法】

    本文实例讲述了JavaScript交换变量的常用方法.分享给大家供大家参考,具体如下: 许多算法需要交换2个变量.在编码面试中,可能会问您"如何在没有临时变量的情况下交换2个变量?".我很高兴知道执行变量交换的多种方法.在本文中,您将了解大约4种交换方式(2种使用额外的内存,而2种不使用额外的内存). 1. 解构赋值 解构赋值语法(ES2015的功能)使您可以将数组的项提取到变量中.例如,以下代码对数组进行解构: let a; let b; [a, b] = [1, 2, 3]; a;

随机推荐