工作中常用js功能匯總
一、javascript 中防止重復(fù)點擊、防止點擊過快
防止重復(fù)點擊可以添加一個開關(guān),讓這個開關(guān)默認為 true,第一次點擊將其變?yōu)?false,點擊事件的執(zhí)行需要判斷這個開關(guān)是否為 true,為 true 執(zhí)行,false 不執(zhí)行。例子如下:
var isclick= true;
function click(){
if(isclick){
isclick = false;
//下面添加需要執(zhí)行的事件
...
}
如果只是防止點擊過快,還可以設(shè)置定時器,在一定時間后,自動將開關(guān)變?yōu)?true,下面例子就是在 500 毫秒后,開關(guān)自動變?yōu)?true。
var isclick= true;
function click(){
if(isclick){
isclick= false;
//下面添加需要執(zhí)行的事件
...
//定時器
setTimeout(function(){
isclick = true;
}, 500);
}
二、jquery 實現(xiàn) 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 傳輸參數(shù)(支持中文)
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;
}
//調(diào)用方法
GetQueryString("參數(shù)名")
四、Jq 獲取 from 表單數(shù)據(jù)
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;
}
調(diào)用方法:
var userData. = getFromData(); userData.表單name值 //獲取值
五、設(shè)置,獲取,清空 Cookie
// 設(shè)置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 轉(zhuǎn)換時間戳-轉(zhuǎn)換成 yyyy-MM-dd HH:mm:ss
//時間戳轉(zhuǎn)換方法 date:時間戳數(shù)字
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 = '專家認證二維碼';// 設(shè)置下載的文件名,默認是'下載'
oA.href = url;
oA.className = "qrcode"
document.body.appendChild(oA);
oA.click();
oA.remove(); // 下載之后把創(chuàng)建的元素刪除
}
八、數(shù)字,金額格式互轉(zhuǎn)正則表達式
<input type="text" placeholder="請輸入" oninput = "checkInput(this)">
input 輸入實時判斷輸入為金額格式
function checkInput(obj) {
var t = obj.value.charAt(0);
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除"數(shù)字"和"."以外的字符
obj.value = obj.value.replace(/^[0]+[0-9]*$/gi, ""); //第一位數(shù)字不能為0
obj.value = obj.value.replace(/^\./g, ""); //驗證第一個字符是數(shù)字而不是.
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'); //只能輸入兩個小數(shù)
if (t == '-') {
obj.value = '-' + obj.value;
}
}
數(shù)字轉(zhuǎn)金額格式,保留兩位小數(shù)點 例:將 1234567 轉(zhuǎn)換為 1,234,567.00
//s是數(shù)字,n是小數(shù)點位數(shù)
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;
}
金額格式轉(zhuǎn)數(shù)字 例:將 1,234,567.00 轉(zhuǎn)換為 1234567.00
function moneyToNumValue(val) {
var num = val.trim();
var ss = num.toString();
if (ss.length == 0) {
return "0";
}
return ss.replace(/,/g, "");
}
九、canvas 圖片背景設(shè)置為白色或透明
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) {
// 當該像素是透明的,則設(shè)置成白色
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) {
// 當該像素是白色的,則設(shè)置成透明
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})$/;
//調(diào)用方法
!reg.test(phone) //表示不符合手機號正則表達式
十一、JavaScript 獲取完整當前域名
window.location.protocol+"http://"+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 的協(xié)議部分,例如: http:,ftp:,maito:等等。 window.location.port //url 的端口部分,如果采用默認的80端口,那么返回值并不是默認的80而是空字符
十二、base64 圖片壓縮
//壓縮base64方法
function dealImage(base64, w, callback) {
var newImage = new Image();
var quality = 0.6; //壓縮系數(shù)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); //必須通過回調(diào)函數(shù)返回,否則無法及時拿到該值
}
}
以上就是工作中常用js的匯總的詳細內(nèi)容,更多關(guān)于常用js的匯總的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
深入理解JavaScript和TypeScript中的class
class 聲明創(chuàng)建一個基于原型繼承的具有給定名稱的新類,下面這篇文章主要給大家介紹了關(guān)于JavaScript和TypeScript中class的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。2018-04-04
JavaScript樹結(jié)構(gòu)深度優(yōu)先算法
這篇文章主要介紹了JavaScript樹結(jié)構(gòu)深度優(yōu)先算法,樹結(jié)構(gòu)可以說是前端中最常見的數(shù)據(jù)結(jié)構(gòu)之一,比如說DOM樹、級聯(lián)選擇、樹形組件,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-07-07
JavaScript面向?qū)ο髮崿F(xiàn)放大鏡案例
這篇文章主要為大家詳細介紹了JavaScript面向?qū)ο髮崿F(xiàn)放大鏡案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
傳參安全處理window.btoa base64加密,線性對稱加密
這篇文章主要介紹了傳參安全處理window.btoa base64加密,線性對稱加密,需要的朋友可以參考下2023-07-07
理解Javascript_14_函數(shù)形式參數(shù)與arguments
在'執(zhí)行模型詳解'的'函數(shù)執(zhí)行環(huán)境'一節(jié)中對arguments有了些許的了解,那么讓我們深入的分析一下函數(shù)的形式參數(shù)與arguments的關(guān)系。2010-10-10

