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

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救护车转运电话-急救车出租,转院接送
黄冈市长途跨省救护车出租转院|重症监护救护车出租,24小时在线电话
黄冈市长途跨省救护车出租转院|重症监护救护车出租,24小时在线电话
开封市网站搜索引擎优化&网站设计正规公司,网站制作
开封市网站搜索引擎优化&网站设计正规公司,网站制作
达州市商城网站建设公司%软件系统开发,服务可靠
达州市商城网站建设公司%软件系统开发,服务可靠
孝感市救护车转运病人-跨省转院救护车租赁,收费合理
孝感市救护车转运病人-跨省转院救护车租赁,收费合理
银行审批按揭房抵押贷款申请条件,对工资流水形式的要求
银行审批按揭房抵押贷款申请条件,对工资流水形式的要求
孝感市长途救护车出租护送病人转院|急救车出租,按公里收费
孝感市长途救护车出租护送病人转院|急救车出租,按公里收费
玉溪市网站定制服务%苹果系统app开发,专业团队
玉溪市网站定制服务%苹果系统app开发,专业团队
黄石市120救护车接送患者转院-24小时救护车接送病人
黄石市120救护车接送患者转院-24小时救护车接送病人
岳阳市行业网站建设&专业网站建设服务,服务可靠
岳阳市行业网站建设&专业网站建设服务,服务可靠
房产证红本抵押贷款最高能贷多少?了解银行单笔贷款上限
房产证红本抵押贷款最高能贷多少?了解银行单笔贷款上限
黄石市私人救护车出租护送病人转院|跨省转院救护车租赁,专业接送病人
黄石市私人救护车出租护送病人转院|跨省转院救护车租赁,专业接送病人
未来我们是否可能通过意识上传,与逝去亲人的数字意识进行交流?
未来我们是否可能通过意识上传,与逝去亲人的数字意识进行交流?
十堰市病人转院租救护车-长途120急救车租赁护送病人
十堰市病人转院租救护车-长途120急救车租赁护送病人
企业经营贷款重组流程,债务重组与资产重组
企业经营贷款重组流程,债务重组与资产重组