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

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救护车收费多少钱一公里
黄冈市做网站公司&python开源网站二次开发,专业开发团队
黄冈市做网站公司&python开源网站二次开发,专业开发团队
不动产带押过户是否适用于所有类型的房产,比如二手房、商业房产?
不动产带押过户是否适用于所有类型的房产,比如二手房、商业房产?
赤峰市120救护车出租转运-医疗转运车出租,全国各地都有车
赤峰市120救护车出租转运-医疗转运车出租,全国各地都有车
少数民族的特色美食(如手抓饭、酥油茶)在家中可以尝试制作的简易方法是?
少数民族的特色美食(如手抓饭、酥油茶)在家中可以尝试制作的简易方法是?
乌鲁木齐市长途医疗转运救护车出租|救护车转院接送病人
乌鲁木齐市长途医疗转运救护车出租|救护车转院接送病人
哈尔滨市资讯网站设计制作%客户关系管理系统开发,企业解决方案
哈尔滨市资讯网站设计制作%客户关系管理系统开发,企业解决方案
阿拉善盟120救护车长途跨省运送病人|救护车转院病人返乡,收费合理
阿拉善盟120救护车长途跨省运送病人|救护车转院病人返乡,收费合理
银川市网站开发建设%小视频代运营,模板建站
银川市网站开发建设%小视频代运营,模板建站
城镇户口子女继承农村宅基地,地上的房屋如何处理才符合规定?
城镇户口子女继承农村宅基地,地上的房屋如何处理才符合规定?
婚前贷款买房,婚后用个人工资还贷,这部分财产性质会如何转变?
婚前贷款买房,婚后用个人工资还贷,这部分财产性质会如何转变?
乌海市120救护车出租接送病人-长途救护车租车
乌海市120救护车出租接送病人-长途救护车租车
成都市做网站&网站设计开发,多年建站经验
成都市做网站&网站设计开发,多年建站经验