jQuery:检查参数的URL并将其传递给锚点href(如果存在)的最简单方法



https://example.com/index.php 包含以下两个锚标记:

<a href="page1.php" class="hyperlink">Link 1</a>
<a href="page2.php?b=1" class="hyperlink">Link 2</a>

可以在URL中传递一个或多个参数,例如 https://example.com/index.php?a=1&b=2

使用 jQuery/Javascript,最简单的方法是测试 URL 中是否存在参数a,并将其附加到上述链接中的 hrefs 中(如果存在(,因此它们变为:

<a href="page1.php?a=1" class="hyperlink">Link 1</a>
<a href="page2.php?b=1&a=1" class="hyperlink">Link 2</a>

你弄错了应用程序设计的逻辑。这是您应该在 Web 应用程序的后端执行的操作;检查 GET 请求中的输入参数,并相应地格式化链接超链接。此外,如果您要多次传递该值,则将其存储在用户会话临时环境中(使用 cookie(可能会更容易。

如果您使用的是PHP(正如我可能通过文件的扩展名猜到的那样(,您可以非常轻松地做到这一点:

<a href="page1.php<? 
if(array_key_exists('your_key', $_GET) { 
echo('?your_key=' . $_GET['your_key']) 
} 
?>" class="hyperlink">Link 1</a>
<a href="page2.php?<? 
if(array_key_exists('your_key', $_GET) { 
echo('your_key=' . $_GET['your_key'] . '&') 
} 
?>b=1" class="hyperlink">Link 2</a>

客户端最简单的是使用URL API

var mainUrl = new URL(location.href);
// Won't work in this demo so hard code href
mainUrl = new URL('http://example.com?a=foo&b=2');
var paramA = mainUrl.searchParams.get('a');
$('a.hyperlink').prop('href', function(){
var url = new URL(this.href);
url.searchParams.set('a', paramA);  
return url;
})
// set query params as text just for demo
.text(function(){
return 'Query Params: ' + this.search;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="page1.php?a=1" class="hyperlink">Link 1</a><br/>
<a href="page2.php?b=1&a=1" class="hyperlink">Link 2</a>

你可以尝试使用正则表达式,顺便说一下,我可以看到你正在使用php,所以用$_REQUEST过滤它们

否则在正则表达式中获取链接后的所有内容

var url = window.location.href
var res = url.match("/?(.*)/i")

res 应该包含来自 ?getTO&otherget 的所有内容

相关内容

最新更新