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

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,它提供了最简洁、标准化的方法。如果需要支持旧版浏览器,可以结合第二种方法作为降级方案。

相关帖子
领取失业保险金有时间限制吗,最长可以连续领取多少个月?
领取失业保险金有时间限制吗,最长可以连续领取多少个月?
济宁市小视频制作与剪辑&java开源cms二次开发,网站制作
济宁市小视频制作与剪辑&java开源cms二次开发,网站制作
如果对公益组织给出的物资捐赠接收证明上的金额有异议,应该如何沟通?
如果对公益组织给出的物资捐赠接收证明上的金额有异议,应该如何沟通?
济宁市网站制作设计服务%高效获客,优秀设计团队
济宁市网站制作设计服务%高效获客,优秀设计团队
办理异地就医备案后,医疗费用的报销比例会和参保地一致吗?
办理异地就医备案后,医疗费用的报销比例会和参保地一致吗?
对于普通家庭而言,现在选择“绿电”消费有哪些可行的途径和方式?
对于普通家庭而言,现在选择“绿电”消费有哪些可行的途径和方式?
如何向孩子解释“故乡”、“宗族”这些概念背后的情感与文化?
如何向孩子解释“故乡”、“宗族”这些概念背后的情感与文化?
孝感市高效获客渠道&资讯网站设计制作,专业建站公司
孝感市高效获客渠道&资讯网站设计制作,专业建站公司
2026年新能源汽车补贴的申请和发放,大概需要等待多长时间?
2026年新能源汽车补贴的申请和发放,大概需要等待多长时间?
苏州市网站推广&多语言网站建设,价格透明
苏州市网站推广&多语言网站建设,价格透明
公司经营贷款费用减免政策,特殊群体费用减免
公司经营贷款费用减免政策,特殊群体费用减免
亳州市大型活动保障救护车出租服务|120救护车价格
亳州市大型活动保障救护车出租服务|120救护车价格
宜春市私人救护车出租转运病人-医疗转运车出租,长途转运回家
宜春市私人救护车出租转运病人-医疗转运车出租,长途转运回家
兼职多份工作的灵活就业者,如何合并开具一份完整的收入证明?
兼职多份工作的灵活就业者,如何合并开具一份完整的收入证明?
商品房贷款提前还款违约金2026:各大银行标准对比
商品房贷款提前还款违约金2026:各大银行标准对比
拉萨市python开源网站二次开发%android软件开发,价格透明
拉萨市python开源网站二次开发%android软件开发,价格透明
九江市长途救护车出租接送病人-重症监护救护车出租,转院接送
九江市长途救护车出租接送病人-重症监护救护车出租,转院接送
宣城市救护车接送病人|长途跨省救护车租车电话
宣城市救护车接送病人|长途跨省救护车租车电话
许昌市企业网站建设设计%定制化网站开发,提供一站式建站服务
许昌市企业网站建设设计%定制化网站开发,提供一站式建站服务
汽车贷款期限对二次抵押影响?一贷期限对二贷限制
汽车贷款期限对二次抵押影响?一贷期限对二贷限制
租房补贴是否可以与其他住房保障政策同时享受?
租房补贴是否可以与其他住房保障政策同时享受?