一 : 字符串的封装
1.1 : 去除字符串空格
```
//去除空格 type 1-所有空格 2-前后空格 3-前空格 4-后空格
function trim(str,type){
switch (type){
case 1:return str.replace(/\s+/g,"");
case 2:return str.replace(/(^\s*)|(\s*$)/g, "");
case 3:return str.replace(/(^\s*)/g, "");
case 4:return str.replace(/(\s*$)/g, "");
default:return str;
}
}
```
1.2 : 字母大小写切换
```
/*type
1:首字母大写
2:首页母小写
3:大小写转换
4:全部大写
5:全部小写
* */
//changeCase(‘asdasd’,1)
//Asdasd
function changeCase(str,type)
{
function ToggleCase(str) {
var itemText = “”
str.split(“”).forEach(
function (item) {
if (/^([a-z]+)/.test(item)) {
itemText += item.toUpperCase();
}
else if (/^([A-Z]+)/.test(item)) {
itemText += item.toLowerCase();
}
else{
itemText += item;
}
});
return itemText;
}
switch (type) {
case 1:
return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {
return v1.toUpperCase() + v2.toLowerCase();
});
case 2:
return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {
return v1.toLowerCase() + v2.toUpperCase();
});
case 3:
return ToggleCase(str);
case 4:
return str.toUpperCase();
case 5:
return str.toLowerCase();
default:
return str;
}
}
```
2.3 : 字符串循环复制
//repeatStr(str->字符串, count->次数)
//repeatStr('123',3)
//"123123123"
function repeatStr(str, count) {
var text = '';
for (var i = 0; i < count; i++) {
text += str;
}
return text;
}
2.4 :字符串替换
//字符串替换(字符串,要替换的字符,替换成什么)
function replaceAll(str,AFindText,ARepText){
raRegExp = new RegExp(AFindText,"g");
return str.replace(raRegExp,ARepText);
}
2.5 : 检测密码强度
//checkPwd('12asdASAD')
//3(强度等级为3)
function checkPwd(str) {
var nowLv = 0;
if (str.length < 6) {
return nowLv
}
;
if (/[0-9]/.test(str)) {
nowLv++
}
;
if (/[a-z]/.test(str)) {
nowLv++
}
;
if (/[A-Z]/.test(str)) {
nowLv++
}
;
if (/[\.|-|_]/.test(str)) {
nowLv++
}
;
return nowLv;
}
2.6 :随机的数字验证码
//参数n是生成随机码的位数
function random(n) {
var num = '';
for(var i=0;i<n;i++){
num+=Math.floor(Math.random()*10);
}
return num;
}
2.7 : 字符串出现的次数
在字符串'sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967'中找出'blog'的出现次数。代码如下
function countStr (str,strSplit){
return str.split(strSplit).length-1
}
二 : 数组的操作
2.1 : 数组打乱
//用这种方法打乱数组之后,原来的数组顺序还是不变的
function upsetOrder(arrOld){
var result=[],_length=arrOld.length,arr;
arr=Object.assign([],arrOld)
for(var i=0,len=arr.length;i<len;i++){
result.push(arr.splice(Math.floor(Math.random()*arr.length),1)[0]);
}
return result;
}
2.2 数组去重
function removeReapt(arrOld){
var arr=[];
for(var i=0,len=arrOld.length;i<len;i++){
if(arr.indexOf(arrOld[i])==-1){
arr.push(arrOld[i]);
}
}
return arr;
}
2.3 : 找出数组中的最大值和最小值
function maxArr(arr){
return Math.max.apply(null,arr);
}
function minArr(arr){
return Math.min.apply(null,arr);
}
2.4 :数组的求和,平均值
//这里主要针对的是数字类型的数组
function sumArr(arr){
var sumText=0;
for(var i=0,len=arr.length;i<len;i++){
sumText+=arr[i];
}
return sumText
}
//平均值,小数点可能会有很多位,这里不做处理,处理了使用就不灵活了!
function covArr(arr){
var sumText=sumArr(arr);
var covText=sumText/arr.length;
return covText
}
2.5 :从数组中随机获取元素
//randomOne([1,2,3,6,8,5,4,2,6])
//2
//randomOne([1,2,3,6,8,5,4,2,6])
//8
//randomOne([1,2,3,6,8,5,4,2,6])
//8
//randomOne([1,2,3,6,8,5,4,2,6])
//1
function randomOne(arr) {
return arr[Math.floor(Math.random() * arr.length)];
}
三:关于DOM的操作
3.1 :检测是否含有某一个类名
function hasClass(obj,classStr){
var arr=obj.className.split(/\s+/); //这个正则表达式是因为class可以有多个,判断是否包含
return (arr.indexOf(classStr)==-1)?false:true;
}
//例子:
<div class="ss nnn" id="div1"></div>
<script>
function hasClass(obj,classStr){
var arr=obj.className.split(/\s+/); //这个正则表达式是因为class可以有多个,判断是否包含
return (arr.indexOf(classStr)==-1)?false:true;
}
console.log(hasClass(document.getElementById('div1'),'ss'));//返回为true;
</script>
```
3.2 : 添加类名
```
function addClass(obj,classStr){
if (!this.hasClass(obj,classStr)){obj.className += " " + classStr};
}
```
3.3 : 删除类名
function removeClass(obj,classStr){
if (this.hasClass(obj,classStr)) {
var reg = new RegExp(‘(\s|^)’ + classStr + ‘(\s|$)’);
obj.className = obj.className.replace(reg, ”);
}
},
3.4 :替换类名('被替换的类名',‘替换的类名’)
function replaceClass(obj,newName,oldName) {
removeClass(obj,oldName);
addClass(obj,newName);
}
3.5 : 获取兄弟节点
function siblings(obj){
var a=[];//定义一个数组,用来存o的兄弟元素
var p=obj.previousSibling;
while(p){//先取o的哥哥们 判断有没有上一个哥哥元素,如果有则往下执行 p表示previousSibling
if(p.nodeType===1){
a.push(p);
}
p=p.previousSibling//最后把上一个节点赋给p
}
a.reverse()//把顺序反转一下 这样元素的顺序就是按先后的了
var n=obj.nextSibling;//再取o的弟弟
while(n){//判断有没有下一个弟弟结点 n是nextSibling的意思
if(n.nodeType===1){
a.push(n);
}
n=n.nextSibling;
}
return a;
},
3.6 : 给元素设置样式;
function css(obj,json){
for(var attr in json){
obj.style[attr]=json[attr];
}
}
四 : 其它的设置
4.1 : 现金额大写转换函数
//upDigit(168752632)
//”人民币壹亿陆仟捌佰柒拾伍万贰仟陆佰叁拾贰元整”
//upDigit(1682)
//”人民币壹仟陆佰捌拾贰元整”
//upDigit(-1693)
//”欠人民币壹仟陆佰玖拾叁元整”
function upDigit(n)
{
var fraction = [‘角’, ‘分’,’厘’];
var digit = [‘零’, ‘壹’, ‘贰’, ‘叁’, ‘肆’, ‘伍’, ‘陆’, ‘柒’, ‘捌’, ‘玖’];
var unit = [ [‘元’, ‘万’, ‘亿’], [”, ‘拾’, ‘佰’, ‘仟’] ];
var head = n < 0? ‘欠人民币’: ‘人民币’;
n = Math.abs(n);
var s = ”;
for (var i = 0; i < fraction.length; i++)
{
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, ”);
}
s = s || ‘整’;
n = Math.floor(n);
for (var i = 0; i < unit[0].length && n > 0; i++)
{
var p = ”;
for (var j = 0; j < unit[1].length && n > 0; j++)
{
p = digit[n % 10] + unit[1][j] + p;
n = Math.floor(n / 10);
}
//s = p.replace(/(零.)*零/, '').replace(/^
/, '').replace(/^
/, ‘零’)+ unit[0][i] + s;
s = p+ unit[0][i] + s;
}
return head + s.replace(/(零.)*零元/, ‘元’).replace(/(零.)+/g, ‘零’).replace(/^整$/, ‘零元整’);
}
4.2 : 设置url参数
//获取url参数
function getUrlPrmt(url) {
url = url ? url : window.location.href;
let _pa = url.substring(url.indexOf(‘?’) + 1), _arrS = _pa.split(‘&’), _rs = {};
for (let i = 0, _len = _arrS.length; i < _len; i++) {
let pos = _arrS[i].indexOf(‘=’);
if (pos == -1) {
continue;
}
let name = _arrS[i].substring(0, pos), value = window.decodeURIComponent(_arrS[i].substring(pos + 1));
_rs[name] = value;
}
return _rs;
}
//获取参数另外一种方法:
//name :表示我们要获取的地址栏参数的key url表示地址栏,defalutValue:表示默认的值
function (name, url, defaultValue) {
name = name.toLowerCase();
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", 'i');
var search = url || window.location.href;
search = search.substr(search.indexOf('?') + 1);
var r = search.match(reg);
if (r != null) return decodeURIComponent(r[2]);
else if (defaultValue) return defaultValue;
else
return null;
}
//设置url参数
//setUrlPrmt({‘a’:1,’b’:2})
//a=1&b=2
function setUrlPrmt(obj) {
let _rs = [];
for (let p in obj) {
if (obj[p] != null && obj[p] != ”) {
_rs.push(p + ‘=’ + obj[p])
}
}
return _rs.join(‘&’);
}
4.3 : 随机返回一个范围的数字
function randomNumber(n1,n2){
//randomNumber(5,10)
//返回5-10的随机整数,包括5,10
if(arguments.length===2){
return Math.round(n1+Math.random()*(n2-n1));
}
//randomNumber(10)
//返回0-10的随机整数,包括0,10
else if(arguments.length===1){
return Math.round(Math.random()*n1)
}
//randomNumber()
//返回0-255的随机整数,包括0,255
else{
return Math.round(Math.random()*255)
}
}
4.4 : 生成一个随机的颜色
//这个函数的使用要和上面的获取随机数的函数randomNumber()配合使用;
function randomColor(){
//randomNumber是上面定义的函数
//写法1
return ‘rgb(’ + randomNumber(255) + ‘,’ + randomNumber(255) + ‘,’ + randomNumber(255) + ‘)’;
//写法2
return '#'+Math.random().toString(16).substring(2).substr(0,6);
//写法3
var color='#';
for(var i=0;i<6;i++){
color+='0123456789abcdef'[randomNumber(15)];
}
return color;
}
4.5: 倒计时函数
//到某一个时间的倒计时
//getEndTime(‘2017/7/22 16:0:0’)
//”剩余时间6天 2小时 28 分钟20 秒”
function getEndTime(endTime){
var startDate=new Date(); //开始时间,当前时间
var endDate=new Date(endTime); //结束时间,需传入时间参数
var t=endDate.getTime()-startDate.getTime(); //时间差的毫秒数
var d=0,h=0,m=0,s=0;
if(t>=0){
d=Math.floor(t/1000/3600/24);
h=Math.floor(t/1000/60/60%24);
m=Math.floor(t/1000/60%60);
s=Math.floor(t/1000%60);
}
return “剩余时间”+d+”天 “+h+”小时 “+m+” 分钟”+s+” 秒”;
}
“`