前端开发常用的30个js工具函数

本文介绍了JavaScript中的一系列实用函数,包括从URL获取参数、检测设备类型、验证邮箱和电话号码、时间戳处理、对象深拷贝、生成随机数、字符串操作以及DOM事件管理和浏览器本地存储功能。
摘要由CSDN通过智能技术生成
  1. 获取URL参数值:
function getUrlParam(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
    var results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
  1. 检测是否是移动设备:
function isMobileDevice() {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
  1. 检测是否是邮箱地址:
function isEmail(email) {
    var regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
    return regex.test(email);
}
  1. 检测是否是手机号码:
function isPhoneNumber(phone) {
    var regex = /^\d{11}$/;
    return regex.test(phone);
}
  1. 获取当前时间戳:
function getCurrentTimestamp() {
    return Math.floor(Date.now() / 1000);
}
  1. 深拷贝对象:
function deepCopy(obj) {
    return JSON.parse(JSON.stringify(obj));
}
  1. 随机生成指定范围内的整:
function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
  1. 去除字符串首尾空格:
function trimString(str) {
    return str.replace(/^\s+|\s+$/g, '');
}
  1. 判断是否是数字:
function isNumber(num) {
    return !isNaN(parseFloat(num)) && isFinite(num);
}
  1. 判断是否是数组:
function isArray(arr) {
    return Array.isArray(arr);
}
  1. 判断是否是对象:
function isObject(obj) {
    return obj !== null && typeof obj === 'object';
}
  1. 判断是否是函数:
function isFunction(func) {
    return typeof func === 'function';
}
  1. 判断是否是空对象:
function isEmptyObject(obj) {
    return Object.keys(obj).length === 0 && obj.constructor === Object;
}
  1. 判断是否包含某个类名:
function hasClass(element, className) {
    return (' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1;
}
  1. 添加类名:
function addClass(element, className) {
    if (!hasClass(element, className)) {
        element.className += ' ' + className;
    }
}
  1. 移除类名:
function removeClass(element, className) {
    element.className = element.className.replace(new RegExp('(?:^|\\s)' + className + '(?!\\S)'), '');
}
  1. 切换类名:
function toggleClass(element, className) {
    if (hasClass(element, className)) {
        removeClass(element, className);
    } else {
        addClass(element, className);
    }
}
  1. 获取元素的样式:
function getStyle(element, style) {
    return window.getComputedStyle(element, null).getPropertyValue(style);
}
  1. 设置元素的样式:
function setStyle(element, style, value) {
    element.style[style] = value;
}
  1. 检测是否支持LocalStorage:
function isLocalStorageSupported() {
    try {
        return 'localStorage' in window && window['localStorage'] !== null;
    } catch (e) {
        return false;
    }
}
  1. 检测是否支持SessionStorage:
function isSessionStorageSupported() {
    try {
        return 'sessionStorage' in window && window['sessionStorage'] !== null;
    } catch (e) {
        return false;
    }
}
  1. 添加事件监听:
function addEvent(element, event, handler) {
    if (element.addEventListener) {
        element.addEventListener(event, handler, false);
    } else if (element.attachEvent) {
        element.attachEvent('on' + event, handler);
    }
}
  1. 移除事件监听:
function removeEvent(element, event, handler) {
    if (element.removeEventListener) {
        element.removeEventListener(event, handler, false);
    } else if (element.detachEvent) {
        element.detachEvent('on' + event, handler);
    }
}
  1. 阻止事件冒泡:
function stopPropagation(event) {
    event = event || window.event;
    if (event.stopPropagation) {
        event.stopPropagation();
    } else {
        event.cancelBubble = true;
    }
}
  1. 阻止默认事件:
function preventDefault(event) {
    event = event || window.event;
    if (event.preventDefault) {
        event.preventDefault();
    } else {
        event.returnValue = false;
    }
}
  1. 获取元素相对于文档的位置:
function getElementPosition(element) {
    var rect = element.getBoundingClientRect();
    return {
        top: rect.top + window.scrollY,
        left: rect.left + window.scrollX
    };
}
  1. 检测是否在视口内:
function isInViewport(element) {
    var rect = element.getBoundingClientRect();
    return (
        rect.top >= 0 &&
        rect.left >= 0 &&
        rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
        rect.right <= (window.innerWidth || document.documentElement.clientWidth)
    );
}
  1. 滚动到指定元素:
function scrollToElement(element) {
    element.scrollIntoView({ behavior: 'smooth' });
}
  1. 获取滚动位置:
function getScrollPosition() {
    return {
        x: window.pageXOffset || document.documentElement.scrollLeft,
        y: window.pageYOffset || document.documentElement.scrollTop
    };
}
  1. 滚动到顶部:
function scrollToTop() {
    window.scrollTo({ top: 0, behavior: 'smooth' });
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温暖前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值