javascript - 从 url 获取所有参数并插入除一个之外的所有 href
问题描述
朋友们,我需要你们的帮助。我需要从 url 获取参数
ex: www.test.com/?s=1¶m=2¶m=3
并放入页面上的所有href,减去参数= s。那么它看起来像这样:
ex: href='www.test.com/?param1¶m=2'
这已经发生了,问题是我不想传递给 hrefs:s 参数
完整代码:
$(document).ready(function() {
function querystringToDict(querystring){
if (querystring.length === 0) {
return {};
}
let queryDict = {}
querystring.split("&").forEach(function(item) {
queryDict[item.split("=")[0]] = item.split("=")[1]
});
return queryDict;
}
var queryDict = querystringToDict(location.search.substr(1));
var queryHref, queryFinal = {};
var lctSearch = location.search;
$('html a').each(function() {
// if the href contains www.test.com insert params
if ($(this).prop('href').includes('www.test.com')){
if(lctSearch != ''){
param = $(this).attr('href').split('?')[1] === undefined ? '' :
$(this).attr('href').split('?')[1];
queryHref = querystringToDict(param);
queryFinal = Object.assign({}, queryHref, queryDict);
paramFinal = Object.keys(queryFinal).map(key => key + '=' + queryFinal[key]).join('&');
$(this).attr('href',$(this).attr('href').split('?'[0].concat('?',paramFinal));
}
}
});
});
解决方案
您可以在您编写的函数中排除它:
querystring
.split("&")
.filter(el => el.split("=")[0] != 's')
// ^^^^^^^^^^^^^^^^^^^^^^^---- exclude the "s" parameter
.forEach(function(item) {
queryDict[item.split("=")[0]] = item.split("=")[1]
});
推荐阅读
- fonts - 希伯来语字体 PUA 标记未正确放置在 Word 中
- python-3.x - Pyomo 找不到 gurobi 求解器
- postman - Postman Sushi Selector 演示 - 基于关键字的测试失败?
- javascript - Vanilla JavaScript - 在满足多个条件时尝试更新数组元素
- javascript - 使用 Javascript 或 jQuery 通过元素的高度更改元素的颜色?
- angular - 如何使用带有控件 ID 的 Typescript 隐藏控件
- scala - 将大文件拆分为小文件并使用spark保存在不同的路径中
- sql - where 语句中的 case 语句
- android - XML 文件结束
- icons - react-native-vector-icons 在 Expo 项目中不起作用