JS封装函数收纳
当前时间格式化
查看代码
<p class="next">今天是<span>1970</span>年<span>01</span>月<span>01</span>日</p>
<p class="tips">现在是<span>18</span>:<span>18</span>:<span>00</span></p>
<script>
//先调用一次,防止第一次刷新页面留白
time()
//1秒调用一次
setInterval(time, 1000)
function time() {
//获取当前日期 和 时间
let nowday = document.querySelectorAll('.next span')
let nowtime = document.querySelectorAll('.tips span')
let now = new Date() //创建now对象
let y = now.getFullYear() //年
let m = now.getMonth() + 1 //月
let d = now.getDate() //天
let h = now.getHours() //小时
h = h < 10 ? '0' + h : h //格式化
let min = now.getMinutes() //分
m = m < 10 ? '0' + m : m //格式化
let s = now.getSeconds() //秒
s = s < 10 ? '0' + s : s //格式化
nowday[0].innerHTML = y
nowday[1].innerHTML = m
nowday[2].innerHTML = d
nowtime[0].innerHTML = h
nowtime[1].innerHTML = min
nowtime[2].innerHTML = s
}
</script>
倒计时函数
查看代码
<body>
<div class="countdown">
<p class="title">倒计时</p>
<p class="clock">
<span id="hour">00</span>
<i>:</i>
<span id="minutes">25</span>
<i>:</i>
<span id="scond">20</span>
</p>
</div>
<script>
//先调用一次,方式第一次刷新页面留白
time()
//1秒调用一次
setInterval(time, 1000)
function time() {
//一、【倒计时部分】
// 1. 得到现在的时间戳
let now = +new Date()
// 2. 得到指定时间的时间戳
let last = +new Date('2024-3-30 18:30:00')
// 3. (计算剩余的毫秒数) / 1000 === 剩余的秒数
let count = (last - now) / 1000
// 4. 转换为时分秒
let h = parseInt(count / 60 / 60 % 24) // 小时
h = h < 10 ? '0' + h : h
let m = parseInt(count / 60 % 60) // 分数
m = m < 10 ? '0' + m : m
let s = parseInt(count % 60); // 秒数
s = s < 10 ? '0' + s : s
hour.innerHTML = h
minutes.innerHTML = m
scond.innerHTML = s
}
</script>
</body>
缓动动画animate.js
查看代码
<script>
//timer是全局变量
var timer=null;
//animate(谁动,目标位置,回调函数)
function animate(obj,target,callback)
{
//每次开始前先清除之前的定时器,防止多次点击造成加速
clearInterval(timer);
obj.timer = setInterval(function(){
// 步长取整
var step = (target - obj.offsetLeft) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
if(obj.offsetLeft == target)
{
// 停止计时器 停止动画
clearInterval(obj.timer);
// 回调函数在定时器结束里面
if (callback) {
callback();
}
}
//缓动
obj.style.left = obj.offsetLeft + step + "px";
},15)
}
</script>
4.普通冒泡排序
查看代码
function bubbling(arr, isBigSmall) { // arr 数组 , isBigSmall 是否从大到小排练
let num = arr.length
for (let i = 0; i < num; i++) {
for (let j = 0; j < num; j++) {
if (arr[j] > arr[j + 1]) {
let numNumber = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = numNumber
}
}
}
if (isBigSmall || isBigSmall === true) { //从大到小排练
arr = arr.reverse()
}
return arr // 默认从小到大
}
快速排序
查看代码
function rapidSort(arr, isBigSmall) { // arr 数组 , isBigSmall 是否从大到小排练
let left = []
let right = []
let center = []
let arrLength = arr.length
for (let i = 0; i < arrLength; i++) {
if (arr[i] === arr[0]) {
center.push(arr[i])
} else if (arr[i] > arr[0]) {
right.push(arr[i])
} else {
left.push(arr[i])
}
}//将数组分为3部分, 同时进行排练,最后合并
let leftnew = bubblingSortList(left)
let rightnew = bubblingSortList(right)
let newArr = leftnew.concat(center, rightnew)
if (isBigSmall || isBigSmall === true) { //从大到小排练
newArr = newArr.reverse()
}
return newArr
}
function bubblingSortList(index) {
let arrLength = index.length
for (let i = 0; i < arrLength; i++) {
for (let j = 0; j < arrLength; j++) {
if (index[j] > index[j + 1]) {
let num = index[j]
index[j] = index[j + 1]
index[j + 1] = num
}
}
}
return index
}
数组去重ES5
查看代码
function outRepetitionES5(arr) {
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i])
}
}
return newArr
}
数组去重ES6
查看代码
function outRepetitionES6(arr) {
return [...new Set(arr)]
}
去除连续字符串
查看代码
//函数
function uniq(str) {
return str.replace(/(\w)\1+/g, '$1')
}
//调用示例
let str = uniq('ijsisiiiisaajjdain')
console.log(str);
范围随机数
查看代码
function randomFun(min, max, arrLength) { // min 随机数最小范围 ,ma随机数最大范围 arrLength[可选参数] 是否以数组的形式返回多个
if (arrLength) { // 没有长度返回单个随机数
singleRandomFun(min, max)
} else { // 返回一个指定长度的数组,每一个都是随机数
let arr = []
for (let i = 0; i < arrLength;i++) {
arr.push(singleRandomFun(min, max))
}
return arr
}
}
//获取单个随机数
function singleRandomFun(min, max) {
return Math.floor(Math.random() * (max - min))
}
生成指定位数验证码
查看代码
//1. 封装函数
function specifiedYZM(numNumber, isLetter) { // 验证码长度[numNumber] 是否有字母[isLetter]
if (numNumber) {
let arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
let arr2 = '1234567890qwertyuiopasdfghjklzxcvbnm'
arr2 = arr2.split('')
let arr = ''
let arrLength = ''
let tar = []
if (isLetter) {
arr = arr2
arrLength = arr2.length
} else {
arr = arr1
arrLength = arr1.length
}
for (let i = 0; i < numNumber; i++) {
tar.push(arr[Math.floor(Math.random() * arrLength)])
}
tar = tar.join('')
return tar
} else {
return '验证码长度不可为空'
}
}
//2. 调用示例
let yanzhengma = specifiedYZM(4, true)
console.log(yanzhengma);
密码强度
查看代码
//封装
function passStrength(stringText) { //[stringText]密码形参
var passLv
if (stringText.length >= 6) {
if (/[0-9]/.test(stringText)) {
passLv = '弱'
}
if (/[a-z]/.test(stringText)) {
passLv = '中'
}
if (/[A-Z]/.test(stringText)) {
passLv = '较强'
}
if (/[\.|-|_]/.test(stringText)) {
passLv = '很强'
}
}else{
passLv = '请输入6位数以上密码'
}
return passLv
}
//调用示例
let pStrength = passStrength('12356')
console.log(pStrength);
邮箱验证正则表达式
查看代码
function isAvailableEmail(sEmail) {
var reg = /^([\w+\.])+@\w+([.]\w+)+$/
return reg.test(sEmail)
}
本文来自博客园,作者:RHCHIK,转载请注明原文链接:https://www.cnblogs.com/suihung/p/16052819.html