js常用函数_工作中常用的 JS 工具函数

news/2024/7/3 7:20:18

11500c44ea05d699976f5f6a422fb0f3.gif

如果文章和笔记能带您一丝帮助或者启发,请不要吝啬你的赞和收藏,你的肯定是我前进的最大动力?

  • 附笔记链接,阅读往期更多优质文章可移步查看,喜欢的可以给我点赞鼓励哦:https://github.com/Wscats/CV/issues/27

为元素添加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方法

Element.prototype.trigger = function(type, data) {
var event = document.createEvent("HTMLEvents");
event.initEvent(type, true, true);
event.data = data || {};
event.eventName = type;
event.target = this;
this.dispatchEvent(event);
return this;
};

NodeList.prototype.trigger = function(event) {
[]["forEach"].call(this, function(el) {
el["trigger"](event);
});
return this;
};

转义html标签

function HtmlEncode(text) {
return text
.replace(/&/g, "&")
.replace(/\"/g, '"')
.replace(/ .replace(/>/g, ">");
}

HTML标签转义

// HTML 标签转义
// @param {Array.} templateData 字符串类型的tokens
// @param {...} ..vals 表达式占位符的运算结果tokens
//
function SaferHTML(templateData) {
var s = templateData[0];
for (var i = 1; i < arguments.length; i++) {
var arg = String(arguments[i]);
// Escape special characters in the substitution.
s += arg
.replace(/&/g, "&")
.replace(/")
.replace(/>/g, " // Don't escape special characters in the template.
s += templateData[i];
}
return s;
}
// 调用
var html = SaferHTML`

这是关于字符串模板的介绍

`;

跨浏览器绑定事件


function addEventSamp(obj, evt, fn) {
if (!oTarget) {
return;
}
if (obj.addEventListener) {
obj.addEventListener(evt, fn, false);
} else if (obj.attachEvent) {
obj.attachEvent("on" + evt, fn);
} else {
oTarget["on" + sEvtType] = fn;
}
}

加入收藏夹


function addFavorite(sURL, sTitle) {
try {
window.external.addFavorite(sURL, sTitle);
} catch (e) {
try {
window.sidebar.addPanel(sTitle, sURL, "");
} catch (e) {
alert("加入收藏失败,请使用Ctrl+D进行添加");
}
}
}

提取页面代码中所有网址

var aa = document.documentElement.outerHTML
.match(
/(url\(|src=|href=)[\"\']*([^\"\'\(\)\\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\\[\] ]+)/gi
)
.join("\r\n")
.replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/gim, "");
alert(aa);

动态加载脚本文件

function appendscript(src, text, reload, charset) {
var id = hash(src + text);
if (!reload && in_array(id, evalscripts)) return;
if (reload && $(id)) {
$(id).parentNode.removeChild($(id));
}

evalscripts.push(id);
var scriptNode = document.createElement("script");
scriptNode.type = "text/javascript";
scriptNode.id = id;
scriptNode.charset = charset
? charset
: BROWSER.firefox
? document.characterSet
: document.charset;
try {
if (src) {
scriptNode.src = src;
scriptNode.onloadDone = false;
scriptNode.onload = function() {
scriptNode.onloadDone = true;
JSLOADED[src] = 1;
};
scriptNode.onreadystatechange = function() {
if (
(scriptNode.readyState == "loaded" ||
scriptNode.readyState == "complete") &&
!scriptNode.onloadDone
) {
scriptNode.onloadDone = true;
JSLOADED[src] = 1;
}
};
} else if (text) {
scriptNode.text = text;
}
document.getElementsByTagName("head")[0].appendChild(scriptNode);
} catch (e) {}
}

返回顶部的通用方法

function backTop(btnId) {
var btn = document.getElementById(btnId);
var d = document.documentElement;
var b = document.body;
window.onscroll = set;
btn.style.display = "none";
btn.onclick = function() {
btn.style.display = "none";
window.onscroll = null;
this.timer = setInterval(function() {
d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
if (d.scrollTop + b.scrollTop == 0)
clearInterval(btn.timer, (window.onscroll = set));
}, 10);
};
function set() {
btn.style.display = d.scrollTop + b.scrollTop > 100 ? "block" : "none";
}
}
backTop("goTop");

实现base64解码


function base64_decode(data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1,
o2,
o3,
h1,
h2,
h3,
h4,
bits,
i = 0,
ac = 0,
dec = "",
tmp_arr = [];
if (!data) {
return data;
}
data += "";
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = (h1 << 18) | (h2 << 12) | (h3 << 6) | h4;
o1 = (bits >> 16) & 0xff;
o2 = (bits >> 8) & 0xff;
o3 = bits & 0xff;
if (h3 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
} else if (h4 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
} else {
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
} while (i < data.length);
dec = tmp_arr.join("");
dec = utf8_decode(dec);
return dec;
}

确认是否是键盘有效输入值

function checkKey(iKey) {
if (iKey == 32 || iKey == 229) {
return true;
} /*空格和异常*/
if (iKey > 47 && iKey < 58) {
return true;
} /*数字*/
if (iKey > 64 && iKey < 91) {
return true;
} /*字母*/
if (iKey > 95 && iKey < 108) {
return true;
} /*数字键盘1*/
if (iKey > 108 && iKey < 112) {
return true;
} /*数字键盘2*/
if (iKey > 185 && iKey < 193) {
return true;
} /*符号1*/
if (iKey > 218 && iKey < 223) {
return true;
} /*符号2*/
return false;
}

全角半角转换

//iCase: 0全到半,1半到全,其他不转化
function chgCase(sStr, iCase) {
if (
typeof sStr != "string" ||
sStr.length <= 0 ||
!(iCase === 0 || iCase == 1)
) {
return sStr;
}
var i,
oRs = [],
iCode;
if (iCase) {
/*半->全*/
for (i = 0; i < sStr.length; i += 1) {
iCode = sStr.charCodeAt(i);
if (iCode == 32) {
iCode = 12288;
} else if (iCode < 127) {
iCode += 65248;
}
oRs.push(String.fromCharCode(iCode));
}
} else {
/*全->半*/
for (i = 0; i < sStr.length; i += 1) {
iCode = sStr.charCodeAt(i);
if (iCode == 12288) {
iCode = 32;
} else if (iCode > 65280 && iCode < 65375) {
iCode -= 65248;
}
oRs.push(String.fromCharCode(iCode));
}
}
return oRs.join("");
}

版本对比

function compareVersion(v1, v2) {
v1 = v1.split(".");
v2 = v2.split(".");

var len = Math.max(v1.length, v2.length);

while (v1.length < len) {
v1.push("0");
}

while (v2.length < len) {
v2.push("0");
}

for (var i = 0; i < len; i++) {
var num1 = parseInt(v1[i]);
var num2 = parseInt(v2[i]);

if (num1 > num2) {
return 1;
} else if (num1 < num2) {
return -1;
}
}
return 0;
}

压缩CSS样式代码

function compressCss(s) {
//压缩代码
s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //删除注释
s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容错处理
s = s.replace(/;\s*;/g, ";"); //清除连续分号
s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白
return s == null ? "" : s[1];
}

获取当前路径

var currentPageUrl = "";
if (typeof this.href === "undefined") {
currentPageUrl = document.location.toString().toLowerCase();
} else {
currentPageUrl = this.href.toString().toLowerCase();
}

字符串长度截取

function cutstr(str, len) {
var temp,
icount = 0,
patrn = /[^\x00-\xff]/,
strre = "";
for (var i = 0; i < str.length; i++) {
if (icount < len - 1) {
temp = str.substr(i, 1);
if (patrn.exec(temp) == null) {
icount = icount + 1
} else {
icount = icount + 2
}
strre += temp
} else {
break;
}
}
return strre + "..."
}

时间日期格式转换

Date.prototype.format = function(formatStr) {
var str = formatStr;
var Week = ["日", "一", "二", "三", "四", "五", "六"];
str = str.replace(/yyyy|YYYY/, this.getFullYear());
str = str.replace(
/yy|YY/,
this.getYear() % 100 > 9
? (this.getYear() % 100).toString()
: "0" + (this.getYear() % 100)
);
str = str.replace(
/MM/,
this.getMonth() + 1 > 9
? (this.getMonth() + 1).toString()
: "0" + (this.getMonth() + 1)
);
str = str.replace(/M/g, this.getMonth() + 1);
str = str.replace(/w|W/g, Week[this.getDay()]);
str = str.replace(
/dd|DD/,
this.getDate() > 9 ? this.getDate().toString() : "0" + this.getDate()
);
str = str.replace(/d|D/g, this.getDate());
str = str.replace(
/hh|HH/,
this.getHours() > 9 ? this.getHours().toString() : "0" + this.getHours()
);
str = str.replace(/h|H/g, this.getHours());
str = str.replace(
/mm/,
this.getMinutes() > 9
? this.getMinutes().toString()
: "0" + this.getMinutes()
);
str = str.replace(/m/g, this.getMinutes());
str = str.replace(
/ss|SS/,
this.getSeconds() > 9
? this.getSeconds().toString()
: "0" + this.getSeconds()
);
str = str.replace(/s|S/g, this.getSeconds());
return str;
};

// 或
Date.prototype.format = function(format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
S: this.getMilliseconds() //millisecond
};
if (/(y+)/.test(format))
format = format.replace(
RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length)
);
for (var k in o) {
if (new RegExp("(" + k + ")").test(format))
format = format.replace(
RegExp.$1,
RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
);
}
return format;
};
alert(new Date().format("yyyy-MM-dd hh:mm:ss"));

跨浏览器删除事件

function delEvt(obj, evt, fn) {
if (!obj) {
return;
}
if (obj.addEventListener) {
obj.addEventListener(evt, fn, false);
} else if (oTarget.attachEvent) {
obj.attachEvent("on" + evt, fn);
} else {
obj["on" + evt] = fn;
}
}

判断是否以某个字符串结束

String.prototype.endWith = function(s) {
var d = this.length - s.length;
return d >= 0 && this.lastIndexOf(s) == d;
};

返回脚本内容

function evalscript(s) {
if (s.indexOf("

http://www.niftyadmin.cn/n/3873761.html

相关文章

c++中 explicit的作用

C提供了关键字explicit&#xff0c;可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C中&#xff0c; 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数)&#xff0c; 承担了两个角色。 …

金属箔式应变片性能—单臂电桥

1、电桥基础知识 2、调零 1&#xff09;零点的产生&#xff08;摘自 桥式传感器的调零分析 [会议论文] 孙徐仁- 20012001全国压力计量测试技术年会&#xff09; 2&#xff09;放大器调零 3&#xff09;电桥平衡调节 4、实验接线图 5、应用&#xff08;拓展部分&#xff09…

c事件和委托的区别_unity3d 笔记32事件

事件event事件是一个特殊的委托或者理解为事件内部是由委托实现的事件只能通过-&#xff0c;添加方法(事件处理)&#xff0c;不能赋值事件只能在类中触发&#xff0c;不能由其他的类触发&#xff0c;其他类只能用-&#xff0c;添加删除方法来控制事件的处理&#xff0c;触发事件…

windows中python环境搭建

Python的安装&#xff1a; 1.进入Python官方网站下载安装包 点击导航栏的 Downloads 会自动识别你的windows系统 你会看到 Python3.6.2 和 Python2.7.13 &#xff08;32位系统&#xff09;的安装包 注&#xff1a;Python3以后版本不再向Python2进行兼容&#xff0c;所有…

西门子200PLC不工作了,所有灯都灭了

1、实验箱外置交流保险断,换保险,再测量得知,应该是电源部分坏了,拆机吧; 2、上图 3、观察电源板,电阻(编号R814 ,贴片R39,0.75w)烟花了,初步判断可能是学生把传感器电源部分短路了引起的。 安森美半导体(ON Semiconductor) 器件: v806 超快恢复二极管参数: 603…

【SDUT】2054数据结构实验之链表九:双向链表

问题描述&#xff1a; 学会了单向链表&#xff0c;我们又多了一种解决问题的能力&#xff0c;单链表利用一个指针就能在内存中找到下一个位置&#xff0c;这是一个不会轻易断裂的链。但单链表有一个弱点——不能回指。比如在链表中有两个节点A,B&#xff0c;他们的关系是B是A的…

run cuda samples ubuntu_linux(ubuntu)安装cuda toolkit

nvidia 官方文档nvidia 对不同系统的支持查看是否有支持cuda的GPU:lspci | grep -i nvidia如果没有&#xff0c;安装驱动sudo apt install nvidia-driver-440查看linux版本是否支持uname -m && cat /etc/*release比如我的显示结果如下&#xff1a;x86_64 DISTRIB_IDUbu…

WCF开发框架形成之旅--WCF应用常见问题处理

本文继续前面几篇关于WCF开发框架的随笔&#xff0c;继续介绍WCF的一些经验和知识&#xff0c;其中主要介绍在使用WCF开发中碰到的问题以及解决方法&#xff0c;为自己做个记号&#xff0c;也为后来者提供解决思路&#xff0c;其中包括有动态修改 WCF配置内容、规范WCF客户端的…