使用js写一个方法获取url上的所有参数

你可以使用JavaScript编写一个函数来获取URL上的所有参数。以下是一个简单的示例:

function getURLParams() {
    const urlParams = {};
    const queryString = window.location.search;
    const urlParamsStrings = queryString.split('?')[1].split('&');

    urlParamsStrings.forEach(paramString => {
        if (paramString) {
            const [key, value] = paramString.split('=');
            urlParams[key] = decodeURIComponent(value);
        }
    });

    return urlParams;
}

// 使用示例
const params = getURLParams();
console.log(params);

但是,这个函数假设查询字符串始终存在并且以?开头。为了使其更健壮,你可以修改函数以处理各种情况,例如没有查询字符串或查询字符串格式不正确的情况。以下是一个更健壮的版本:

function getURLParams() {
    const urlParams = {};
    const queryString = window.location.search;
    
    // 如果没有查询字符串,则直接返回空对象
    if (!queryString) {
        return urlParams;
    }

    // 移除查询字符串开头的'?',并通过'&'分割成多个参数对
    const urlParamsStrings = queryString.substring(1).split('&');

    urlParamsStrings.forEach(paramString => {
        if (paramString) {
            const [key, value] = paramString.split('=');
            // 对参数值进行URL解码
            urlParams[key] = decodeURIComponent(value || '');
        }
    });

    return urlParams;
}

// 使用示例
const params = getURLParams();
console.log(params);

这个更健壮的版本首先检查查询字符串是否存在,如果不存在,则直接返回一个空对象。然后,它使用substring(1)来移除查询字符串开头的?,接着通过&字符将查询字符串分割成多个参数对。最后,它遍历这些参数对,将它们存储在一个对象中,并返回该对象。注意,这里还对参数值进行了URL解码,以确保正确处理特殊字符。

posted @ 2025-01-02 09:48  王铁柱6  阅读(58)  评论(0)    收藏  举报