工作中常用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 相关文章推荐
解决jquery的datepicker的本地化以及Today问题
May 23 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 Javascript
jQuery+ajax实现动态执行脚本的方法
Jan 27 Javascript
深入解读JavaScript中的Iterator和for-of循环
Jul 28 Javascript
jQuery+ajax简单实现文件上传的方法
Jun 03 Javascript
AngularJS利用Controller完成URL跳转
Aug 09 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
angular.js中解决跨域问题的三种方式
Jul 12 Javascript
Angular利用trackBy提升性能的方法
Jan 26 Javascript
8 个有用的JS技巧(推荐)
Jul 03 Javascript
JavaScript和TypeScript中的void的具体使用
Sep 12 Javascript
Openlayers显示瓦片网格信息的方法
Sep 28 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP查询分页的实现代码
2017/06/09 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
jQuery 使用个人心得
2009/02/26 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
jQuery如何获取动态添加的元素
2016/06/24 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
Python入门学习之字符串与比较运算符
2015/10/12 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Python 文件数据读写的具体实现
2020/01/24 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
生物技术专业研究生自荐信
2013/09/22 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
财务管理专业求职信
2014/06/11 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL