hg-datepicker
Version:
a datepicker in the mobile terminal
108 lines (98 loc) • 2.28 kB
JavaScript
/**
* 生成 UUID (Universally Unique IDentifier, 通用唯一标识符)
*/
export function generateUUID () {
let d = new Date().getTime()
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
const r = (d + Math.random() * 16) % 16 | 0
d = Math.floor(d / 16)
return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16)
})
return uuid
}
/**
* 以 id 获取 DOM
*/
export function $id (id) {
return document.getElementById(id)
}
/**
* 设置子元素样式
*/
export function setChildStyle (parent, key, val) {
const {
children
} = parent
for (let i = 0; i < children.length; i++) {
children[i].style[key] = val
}
}
/**
* 计算滚动缓冲距离
* Return : Number
* Explain : @v 速度(正负表示运动方向, 单位 px/ms)
* @a 加速度(正数, 单位 px/(ms * ms))
*/
export function calculateBuffer (v, a) {
if (Math.abs(v) < 0.25) return 0
return (v / Math.abs(v)) * ((0.5 * v * v) / a)
}
/**
* 获取从 start 到 end 的数组
* Return : Array
*/
export function getArr (start, end) {
var arr = []
for (var i = start; i <= end; i++) {
arr.push(i)
}
return arr
}
/**
* 个位数前加 0
* Return : String
*/
export function tf (i) {
return (i < 10 ? '0' : '') + i
}
/**
* 是否是每项为数字的数组
* Return : Boolean
*/
export function isNumberArr (arr) {
if (arr instanceof Array) {
return arr.every(function (val) {
return typeof val === 'number' || typeof val === 'undefined'
})
} else return false
}
/**
* 判断两个数组是否相等
* Return : Boolean
*/
export function equiArr (arr, arr2) {
if (arr instanceof Array && arr2 instanceof Array) {
var len = arr.length > arr2.length ? arr.length : arr2.length
return Array(len).fill(1).every(function (val, index) {
return arr[index] === arr2[index]
})
} else return false
}
/**
* 错误打印
*/
export function errLog (msg) {
throw Error(`[Error in hg-datepicker]: ${msg}`)
}
/**
* 判断是否是闰年
* Explain : @year 年份
*/
export function isLeapYear (year) {
let cond1 = year % 4 === 0
let cond2 = year % 100 !== 0
let cond3 = year % 400 === 0
let cond = (cond1 && cond2) || cond3
if (cond) return true
else return false
}