工作中常用js功能汇总


Posted in Javascript onNovember 07, 2020

一、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的汇总的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
Dec 27 Javascript
一个封装js代码-----展开收起效果示例
Jul 03 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
Jan 05 Javascript
js代码实现随机颜色的小方块
Jul 30 Javascript
理解javascript对象继承
Apr 17 Javascript
使用Angular.js实现简单的购物车功能
Nov 21 Javascript
AngularJS页面带参跳转及参数解析操作示例
Jun 28 Javascript
jquery动态赋值id与动态取id方法示例
Aug 21 jQuery
浅谈MUI框架中加载外部网页或服务器数据的方法
Jan 31 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
Vue项目全局配置微信分享思路详解
May 04 Javascript
解决angular2 获取到的数据无法实时更新的问题
Aug 31 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 #Javascript
解决Element中el-date-picker组件不回填的情况
Nov 07 #Javascript
解决element-ui的下拉框有值却无法选中的情况
Nov 07 #Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
Nov 07 #Javascript
详解datagrid使用方法(重要)
Nov 06 #Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 #Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 #Javascript
You might like
PHP中的类-什么叫类
2006/11/20 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
php实现webservice实例
2014/11/06 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
零基础php编程好学吗
2019/10/11 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
jQuery 动画基础教程
2008/12/25 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
eclipse创建python项目步骤详解
2019/05/10 Python
python socket 聊天室实例代码详解
2019/11/14 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
Java程序员面试题
2016/09/27 面试题
医院办公室主任职责
2013/12/29 职场文书
股票投资建议书
2014/05/19 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书