欢迎光临济宁市救护车出租网
详情描述

1. 使用URLSearchParams API(推荐)

// 获取当前URL参数
const params = new URLSearchParams(window.location.search);

// 获取特定参数
const id = params.get('id'); // 返回单个值
const name = params.get('name');

// 检查参数是否存在
if (params.has('page')) {
    const page = params.get('page');
}

// 遍历所有参数
for (const [key, value] of params.entries()) {
    console.log(`${key}: ${value}`);
}

// 转换为对象
const paramsObj = Object.fromEntries(params);

2. 使用正则表达式匹配

function getQueryParam(param) {
    const regex = new RegExp(`[?&]${param}=([^&#]*)`);
    const match = window.location.search.match(regex);
    return match ? decodeURIComponent(match[1]) : null;
}

// 使用示例
const userId = getQueryParam('userId');

3. 获取所有参数为对象

function getAllQueryParams() {
    const params = {};
    const queryString = window.location.search.substring(1);

    if (!queryString) return params;

    queryString.split('&').forEach(pair => {
        const [key, value] = pair.split('=');
        if (key) {
            params[decodeURIComponent(key)] = 
                value ? decodeURIComponent(value) : '';
        }
    });

    return params;
}

// 使用示例
const queryParams = getAllQueryParams();
console.log(queryParams.id, queryParams.name);

4. 结合URL对象使用

// 解析完整URL
const url = new URL('https://example.com/page?id=123&name=test');
const params = new URLSearchParams(url.search);

// 获取参数
console.log(params.get('id')); // "123"

// 解析相对URL(需要base)
const relativeUrl = new URL('/page?sort=desc', 'https://example.com');

5. 处理数组参数(多值参数)

function getQueryParams() {
    const params = {};
    const searchParams = new URLSearchParams(window.location.search);

    for (const [key, value] of searchParams.entries()) {
        if (params[key]) {
            // 如果已有值,转换为数组
            params[key] = Array.isArray(params[key]) 
                ? [...params[key], value]
                : [params[key], value];
        } else {
            params[key] = value;
        }
    }

    return params;
}

// 处理类似 ?category=books&category=movies 的参数

6. 完整工具函数

class QueryParams {
    static getAll() {
        const params = {};
        const searchParams = new URLSearchParams(window.location.search);

        for (const [key, value] of searchParams.entries()) {
            if (params[key]) {
                params[key] = Array.isArray(params[key]) 
                    ? [...params[key], value]
                    : [params[key], value];
            } else {
                params[key] = value;
            }
        }

        return params;
    }

    static get(key) {
        const params = new URLSearchParams(window.location.search);
        return params.get(key);
    }

    static set(key, value) {
        const params = new URLSearchParams(window.location.search);
        params.set(key, value);

        // 更新URL(不刷新页面)
        const newUrl = `${window.location.pathname}?${params.toString()}`;
        window.history.pushState({}, '', newUrl);
    }

    static remove(key) {
        const params = new URLSearchParams(window.location.search);
        params.delete(key);

        const newUrl = `${window.location.pathname}?${params.toString()}`;
        window.history.pushState({}, '', newUrl);
    }
}

// 使用示例
const allParams = QueryParams.getAll();
const token = QueryParams.get('token');
QueryParams.set('page', '2');

注意事项

URL编码/解码:使用decodeURIComponent()处理特殊字符 空值处理:参数可能没有值(如?key哈希部分:查询参数在?之后,#之前 安全性:对用户输入的参数进行验证和清理 浏览器兼容性:URLSearchParams支持现代浏览器,对于旧浏览器需要polyfill

推荐方案

对于现代浏览器开发,推荐使用URLSearchParams API,它提供了最简洁、标准化的方法。如果需要支持旧版浏览器,可以结合第二种方法作为降级方案。

相关帖子
办理异地就医备案后,医疗费用的报销比例会和参保地一致吗?
办理异地就医备案后,医疗费用的报销比例会和参保地一致吗?
对于普通家庭而言,现在选择“绿电”消费有哪些可行的途径和方式?
对于普通家庭而言,现在选择“绿电”消费有哪些可行的途径和方式?
济宁市短视频运营推广&独立网站开发设计,服务可靠
济宁市短视频运营推广&独立网站开发设计,服务可靠
除了基本工资,加班费、高温补贴等计算会跟随最低工资调整吗?
除了基本工资,加班费、高温补贴等计算会跟随最低工资调整吗?
剪纸作品中常见的蝙蝠、鲤鱼等图案,分别蕴含着怎样的美好寓意?
剪纸作品中常见的蝙蝠、鲤鱼等图案,分别蕴含着怎样的美好寓意?
淮安市120长途救护车出租电话|急救车长途转运
淮安市120长途救护车出租电话|急救车长途转运
为什么越来越多的APP把核心功能塞进会员,免费版还能用吗?
为什么越来越多的APP把核心功能塞进会员,免费版还能用吗?
外卖满减门槛越调越高,是物价涨了还是平台规则变了?
外卖满减门槛越调越高,是物价涨了还是平台规则变了?
蚌埠市专业网站设计制作%定制化网站开发,定制开发
蚌埠市专业网站设计制作%定制化网站开发,定制开发
“做四休三”实验中发现,员工的心理健康与压力水平有怎样的变化?
“做四休三”实验中发现,员工的心理健康与压力水平有怎样的变化?
无锡市120救护车长途跨省转运病人-医疗转运车出租,24小时在线电话
无锡市120救护车长途跨省转运病人-医疗转运车出租,24小时在线电话
完成学历或职业资格继续教育后,个人在求职或内部晋升时该如何有效展示?
完成学历或职业资格继续教育后,个人在求职或内部晋升时该如何有效展示?
小区做了雨污分流改造,为啥暴雨天反而井盖冒污水、路面积水更严重?
小区做了雨污分流改造,为啥暴雨天反而井盖冒污水、路面积水更严重?
家里有长辈独居的话,给配个机器人伴侣算不算一种可行的陪伴思路?
家里有长辈独居的话,给配个机器人伴侣算不算一种可行的陪伴思路?
盐城市长途120救护车出租护送病人转院|急救车长途转运护送病人
盐城市长途120救护车出租护送病人转院|急救车长途转运护送病人
钦州市网站建设推广公司%高效获客渠道,价格透明
钦州市网站建设推广公司%高效获客渠道,价格透明
2026年公交出行碳积分计划针对青少年或学生群体设计了哪些激励措施和教育项目?
2026年公交出行碳积分计划针对青少年或学生群体设计了哪些激励措施和教育项目?
苏州市长途120救护车转运病人-急救车出租,转院接送
苏州市长途120救护车转运病人-急救车出租,转院接送
熬夜后狂喝黑咖啡提神,连续七天真能缓解记忆卡顿吗?
熬夜后狂喝黑咖啡提神,连续七天真能缓解记忆卡顿吗?
全面科普贷款利率基础知识,详解利率分类、计息规则与市场定价逻辑
全面科普贷款利率基础知识,详解利率分类、计息规则与市场定价逻辑