君陌离的博客

vuePress-theme-reco 君陌离    2018 - 2020
君陌离的博客 君陌离的博客

Choose mode

  • dark
  • auto
  • light
首页
我的作品
  • 项目橱窗
  • blog模板
分类
  • 数据库
  • CSS
  • 摘记
  • JS
  • Node
  • Vue
  • React
  • GIT
  • Promise
  • Liunx
  • Xshell
  • ajax
  • WINDOWS
  • Python
  • 随笔
  • 脚手架
  • node
  • 自动化
标签
笔记
时间线
About Me
  • 关于我
  • 赞赏
Contact
  • GitHub
  • QQ
author-avatar

君陌离

70

文章

90

标签

首页
我的作品
  • 项目橱窗
  • blog模板
分类
  • 数据库
  • CSS
  • 摘记
  • JS
  • Node
  • Vue
  • React
  • GIT
  • Promise
  • Liunx
  • Xshell
  • ajax
  • WINDOWS
  • Python
  • 随笔
  • 脚手架
  • node
  • 自动化
标签
笔记
时间线
About Me
  • 关于我
  • 赞赏
Contact
  • GitHub
  • QQ
  • HTML5

  • JS

    • JS 前20个常用字符串方法及使用方式
    • JS封装
    • for in,for of, for,forEach,map的区别
    • windowfn方法 npm包引用
    • js中数组操作方法
    • 数组排序的方法
    • 常见的前端跨域解决方案
    • Cookie、session和localStorage、以及sessionStorage之间的区别
    • 数组去重的方法
    • windowfn 常用函数封装(持续更新中)
  • 微信小程序

  • 数据库

  • React

  • Vue

  • vuepress

windowfn 常用函数封装(持续更新中)

vuePress-theme-reco 君陌离    2018 - 2020

windowfn 常用函数封装(持续更新中)

君陌离 2020-08-12 JSwindowfn函数封装

JS

js 冒泡排序
平均值,小数点可能会有很多位,这里不做处理,处理了使用就不灵活了!
css样式 id或者class
兼容
清除对象中值为空的属性
获取cookie
到某一个时间的倒计时
获取css属性值
获取系统当前时间
获取,设置url参数
隐藏 id或者class
插入排序
方向键上下
键盘事件
......

# 千分位处理

//千分位处理
toFormatData(num) {
  if (num == '' || num == undefined) {
    return '';
  }
  var data = parseFloat(num.toString().replace(/\,/g, ""));
  if (!isNaN(data)) {
    var temp = data.toFixed(2).toString().split(".");
    temp[0] = temp[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)', 'ig'), "$1,");
    return temp.join(".");
  } else {
    return '';
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 去重加拼接

//去重加拼接
toGether(index, array) {
  let list = [];
  let arr = array[index];
  if (arr.length > 0) {
    arr.forEach((item, key) => {
      list.push(item);
    })
  }
  let newArray = Array.from(new Set(list)).join(',');
  console.log(typeof (Array.from(new Set(list))))
  console.log(Array.from((new Set(list))))
  console.log(newArray)
  console.log(typeof (newArray))
  return newArray;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 方向键上下

/*方向键上下*/
keyCode(){
  document.onkeydown = function (event) {
    var e = event || window.event;

    if (e && e.keyCode == 38 || e && e.keyCode == 37) { //上,左
      alert('38=上键,37=左键');
    }

    if (e && e.keyCode == 40 || e && e.keyCode == 39) { //下,右
      alert('40=下键,39=右键');
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 键盘事件

//键盘事件
keybroad(index) {
  document.onkeydown = keyDown;

  function keyDown() {
    var e = event || window.event;
    var realkey = null;
    if (e.keyCode == 32) {
      realkey = '\' 空格\'';
      index++
      console.log(realkey + index)
    }
    if (e.keyCode == 13) {
      realkey = '\' 回车\'';
      console.log(realkey)
    }
    if (e.keyCode == 27) {
      realkey = '\' Esc\'';
      console.log(realkey)
    }
    if (e.keyCode == 16) {
      realkey = '\' Shift\'';
      console.log(realkey)
    }
    if (e.keyCode == 17) {
      realkey = '\' Ctrl\'';
      console.log(realkey)
    }
    if (e.keyCode == 18) {
      realkey = '\' Alt\'';
      console.log(realkey)
    }
    if (e && e.keyCode == 38) {
      realkey = '\' 上键\'';
      index++
      console.log(realkey + index)
      return index
    }
    if (e && e.keyCode == 40) {
      realkey = '\' 下键\'';
      index--
      console.log(realkey + index)
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 统计数量

//统计数量
totalNum(val) {
  var num = 0,
    unit = '4444';
  console.log(unit)
  console.log(this)
  if (val) {
    if (val.length > 0) {
      val.forEach(function (key, index) {
        num += Number(key);
      });
    }
  }
  var numVal = this.toFormatData(num)
  return numVal;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 插入排序

//插入排序
insertSort(array) {
  var i = 1,
    j, temp, key, len = array.length;
  for (; i < len; i++) {
    temp = j = i;
    key = array[j];
    while (--j > -1) {
      if (array[j] > key) {
        array[j + 1] = array[j];
      } else {
        break;
      }
    }
    array[j + 1] = key;
  }
  return array;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# js 利用sort进行排序

//js 利用sort进行排序
systemSort(array) {
  return array.sort(function (a, b) {
    return a - b;
  });
}
1
2
3
4
5
6

# js 冒泡排序

//js 冒泡排序
bubbleSort(array) {
  var i = 0,
    len = array.length,
    j, d;
  for (; i < len; i++) {
    for (j = 0; j < len; j++) {
      if (array[i] < array[j]) {
        d = array[j];
        array[j] = array[i];
        array[i] = d;
      }
    }
  }
  return array;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 获取css属性值

//获取css属性值
getStyle(element, attr) {
  if (element.currentStyle) {
    return element.currentStyle[attr];
  } else {
    return getComputedStyle(element, false)[attr];
  }
}
1
2
3
4
5
6
7
8

# 阻止冒泡行为

//阻止冒泡行为
stopBubble(e) {
  //如果提供了事件对象,则这是一个非IE浏览器
  if (e && e.stopPropagation) {
    //因此它支持W3C的stopPropagation()方法
    e.stopPropagation();
  } else {
    //否则,我们需要使用IE的方式来取消事件冒泡
    window.event.cancelBubble = true;
  }

}
1
2
3
4
5
6
7
8
9
10
11
12

# 阻止默认行为

//阻止默认行为
stopDefault(e) {
  if (e && e.preventDefault) {
    e.preventDefault(); //阻止默认浏览器动作(W3C)
  } else {
    window.event.returnValue = false; //IE中阻止函数器默认动作的方式
  }
  return false;
}
1
2
3
4
5
6
7
8
9

# 兼容

//兼容
event(e) {
  var e = (e) ? e : ((window.event) ? window.event : null);
  var e = e || window.event; // firefox下window.event为null, IE下event为null
}
1
2
3
4
5

# 阻止滚动条冒泡事件

//阻止滚动条冒泡事件
preventScroll(id) {
  var _this = document.getElementById(id);
  if (navigator.userAgent.indexOf("Firefox") > 0) {
    _this.addEventListener('DOMMouseScroll', function (e) {
      _this.scrollTop += e.detail > 0 ? 60 : -60;
      e.preventDefault();
    }, false);
  } else {
    _this.onmousewheel = function (e) {
      e = e || window.event;
      _this.scrollTop += e.wheelDelta > 0 ? -60 : 60;
      return false;
    };
  }
  return this;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 获取系统当前时间

//获取系统当前时间
getTime(str, type) {
  var myDate = new Date();
  var year = myDate.getFullYear();
  var month = myDate.getMonth() + 1;
  var day = myDate.getDay();
  var hours = myDate.getHours();
  var minutes = myDate.getMinutes();
  var seconds = myDate.getSeconds();
  if (type == 0) {
    console.log('type')
    return year + str + month + str + day + ' ' + hours + ':' + minutes + ":" + seconds;
  } else if (type == 1) {
    return year + '年' + month + '月' + day + '日' + ' ' + hours + '时' + minutes + "分" + seconds + '秒';
  } else if (type == 2) {
    return year + '年' + month + '月' + day + '日';
  } else {
    console.log('day')
    return year + str + month + str + day;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 数组最大值

//数组最大值
maxArr(arr) {
  return Math.max.apply(null, arr);
}
1
2
3
4

# 数组最小值

//数组最小值
minArr(arr) {
  return Math.min.apply(null, arr);
}
1
2
3
4

# 求和

//求和
sumArr(arr) {
  var sumText = 0;
  for (var i = 0, len = arr.length; i < len; i++) {
    sumText += arr[i];
  }
  return sumText
}
1
2
3
4
5
6
7
8

# 小数点可能会有很多位,这里不做处理,处理了使用就不灵活了

//平均值,小数点可能会有很多位,这里不做处理,处理了使用就不灵活了!
covArr: function (arr) {
  var sumText = this.sumArr(arr);
  var covText = sumText / arr.length;
  return covText
}
1
2
3
4
5
6

# 从数组中随机获取元素

//从数组中随机获取元素
randomOne(arr) {
  return arr[Math.floor(Math.random() * arr.length)];
}
1
2
3
4

# 清除对象中值为空的属性

//清除对象中值为空的属性
//filterParams({a:"",b:null,c:"010",d:123})
//显示{c: "010", d: 123}
filterParams(obj) {
  let _newPar = {};
  for (let key in obj) {
    if ((obj[key] === 0 || obj[key]) && obj[key].toString().replace(/(^\s*)|(\s*$)/g, '') !== '') {
      _newPar[key] = obj[key];
    }
  }
  return _newPar;
}
1
2
3
4
5
6
7
8
9
10
11
12

# 到某一个时间的倒计时

//到某一个时间的倒计时
//getEndTime('2017/7/22 16:0:0')
//"剩余时间6天 2小时 28 分钟20 秒"
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 + " 秒";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 随机码

//随机码
//count取值范围2-36

//randomNumber(10)
//"2584316588472575"

//randomNumber(14)
//"9b405070dd00122640c192caab84537"

//Math.random().toString(36).substring(2);
//"83vhdx10rmjkyb9"
randomNumberOne(count) {
  return Math.random().toString(count).substring(2);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 随机返回一个范围的数字

//随机返回一个范围的数字
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)
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 随机产生颜色

//随机产生颜色
randomColor() {
  //randomNumber是上面定义的函数
  //写法1
  return 'rgb(' + this.randomNumber(255) + ',' + this.randomNumber(255) + ',' + this.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' [this.randomNumber(15)];
  }
  return color;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 获取,设置url参数

//获取,设置url参数
//获取url参数
//getUrlPrmt('segmentfault.com/write?draftId=122000011938')
//显示 {draftId: "122000011938"}
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 设置url参数

//设置url参数
//setUrlPrmt({'a':1,'b':2})
//显示 a=1&b=2
setUrlPrmt(obj) {
  let _rs = [];
  for (let p in obj) {
    if (obj[p] != null && obj[p] != '') {
      _rs.push(p + '=' + obj[p])
    }
  }
  return _rs.join('&');
}
1
2
3
4
5
6
7
8
9
10
11
12

# 现金额大写转换函数

//现金额大写转换函数
//upDigit(168752632)
//"人民币壹亿陆仟捌佰柒拾伍万贰仟陆佰叁拾贰元整"
//upDigit(1682)
//"人民币壹仟陆佰捌拾贰元整"
//upDigit(-1693)
//"欠人民币壹仟陆佰玖拾叁元整"
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(/^$/, '零')+ unit[0][i] + s;s
    s = p + unit[0][i] + s;
  }
  return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# 设置cookie

//cookie
//设置cookie
setCookie(name, value, iDay) {
  var oDate = new Date();
  //oDate.setDate(oDate.getDate() + iDay);
  oDate.setDate(oDate.getDay() + iDay);
  document.cookie = name + '=' + value + ';expires=' + oDate;
}
1
2
3
4
5
6
7
8

# 获取cookie

//获取cookie
getCookie(name) {
  var arr = document.cookie.split('; ');
  console.log(document.cookie)
  console.log(arr)
  for (var i = 0; i < arr.length; i++) {
    var arr2 = arr[i].split('=');
    if (arr2[0] == name) {
      return arr2[1];
    }
  }
  //如果arr2[0] !== name,往下执行,否则(return '';)不执行
  return '';
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 删除cookie

//删除cookie
removeCookie(name) {
  setCookie(name, 1, -1);
}
1
2
3
4

# 显示

//显示
show(obj, index) {
  var obj = document.getElementById(obj) ? document.getElementById(obj) : document.getElementsByClassName(obj);
  console.log(obj.length)
  if (obj.length) {
    obj[index - 1].style.display = "";
  } else {
    obj.style.display = "";
  }
}
1
2
3
4
5
6
7
8
9
10

# 隐藏

//隐藏
hide(obj, index) {
  var obj = document.getElementById(obj) ? document.getElementById(obj) : document.getElementsByClassName(obj);

  if (obj.length) {
    obj[index - 1].style.display = "none";
  } else {
    obj.style.display = "none";
  }
}
1
2
3
4
5
6
7
8
9
10

# css样式

//css样式
css(obj, index, json) {
  var obj = document.getElementById(obj) ? document.getElementById(obj) : document.getElementsByClassName(obj);
  if (obj.length) {
    //class名字
    console.log('class')
    for (var attr in json) {
      obj[index - 1].style[attr] = json[attr];
    }
  } else {
    //id名字
    console.log('id')
    for (var attr in json) {
      obj.style[attr] = json[attr];
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
欢迎来到 您的站点名称($site.title)
看板娘