一、获取id和ClassName
1 | //获取id |
二、获取页面常用高度及兼容
1 | // 浏览器窗口可视区域大小(不包括工具栏和滚动条等边线) |
三、时间个性化输出
1 | //时间个性化输出 |
四、返回顶部的通用方法
1 | //返回顶部的通用方法 |
五、事件委托
1 | //关于编写性能高效的javascript事件的技术 |
六、倒计时
1 | /** |
七、常用正则表达式
- 正整数:
/^[0-9]*[1-9][0-9]*$/
- 负整数:
/^-[0-9]*[1-9][0-9]*$/
- 正浮点数:
/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/
- 负浮点数:
/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/
- 浮点数:
/^(-?\d+)(\.\d+)?$/
- email地址:
/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/
- url地址:
/^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/
- 年/月/日(年-月-日、年.月.日):
/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/
- 匹配中文字符:
/[\u4e00-\u9fa5]/
- 匹配空白行:
/\n\s*\r/
- 匹配中国邮政编码:
/[1-9]\d{5}(?!\d)/
- 匹配身份证(只是对格式进行检验):
/\d{15}|\d{18}/
- 匹配国内电话号码:
/(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/
- 匹配首尾空白字符:
/^\s*|\s*$/
- 匹配HTML标记:
/< (\S*?)[^>]*>.*?|< .*? />/
- 腾讯 QQ 号:
/^[1-9]*[1-9][0-9]*$/
- 中文、英文、数字及下划线:
/^[\u4e00-\u9fa5_a-zA-Z0-9]+$/
八、增删class
1 | //判断是否有这个class |
九、封装cookie组件
1 | var Cookie = { |
十、类型转换函数
1 | var Converter = { |
十一、动态脚本元素
1 | /** |
十二、js数组去重
1 | var Unique = { |
十三、删除左右空格
1 | //删除左右空格 |
十四、判断图片是否加载完
1 | functionloadImage1(url,callback){ |
十五、图片按某个尺寸等比缩放
1 | function imgRatio(picW,picH,maxWidth,maxHeight){ |
十六、遍历document.querySelectorAll()方法返回的结果
1 | // forEach method, could be shipped as part of an Object Literal/Module |
十七、内容向上滚动,有停顿
1 | /** |
十八、事件处理兼容写法
1 | var eventUtil = { |
十九、innerText兼容火狐
1 | //跨浏览器获取innerText |
二十、throttle(节流)和debounce(防抖)
1、throttle(节流)
- 应用场景(需要间隔一定时间触发回调来控制函数调用频率)
- mousemove
- mousedown/keydown
- mousemove
- keyup
- 监听滚动事件判断是否到页面底部自动加载更多
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//函数节流(throttle)
function throttle(fn, threshhold, scope) {
threshhold || (threshhold = 250);
var last, timer;
return function() {
var context = scope || this;
var now = +new Date(),
args = arguments;
if (last && now - last + threshhold < 0) {
clearTimeout(deferTimer);
timer = setTimeout(function() {
last = now;
fn.apply(context, args);
}, threshhold);
} else {
last = now;
fn.apply(context, args);
}
}
}
//调用方法
$('body').on('mousemove', throttle(function(event){
console.log('tick');
}, 1000));
2、debounce(防抖)
- 应用场景(对于连续的事件响应我们只需要执行一次回调)
- 每次 resize/scroll 触发统计事件
- 文本输入的验证(连续输入文字后发送 AJAX 请求进行验证,验证一次就好)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//函数去抖
function debounce(fn, delay){
var timer = null;
return function(){
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function(){
fn.apply(context, args);
}, delay)
}
}
//调用方法
$('input.username').keypress(debounce(function(){
//do the Ajax request
}, 250))
二十一、移动端网络状态判断
1 | //网络状态判断 |
二十二、判断浏览器是否支持 placeholder
1 | function placeholderSuport() { |
二十三、判断移动端设备(简单)
1 | // 判断设备来源 |
二十四、解决不支持console.log报错
1 | var console = console || {log: function() {return;}} |
二十五、js类型判断
1 | var a = ''; |