当URL含ccm_order_by_direction=desc时,为分页链接添加&#filterTop参数
解决方案:给含指定参数的链接添加锚点参数
JavaScript 实现方案
你之前的代码存在几个问题:getElementsByClassName不需要加.前缀,且它返回的是元素集合,不能直接修改href属性,需要遍历每个元素;另外无需引入PHP变量,直接处理页面上每个链接的href即可。
jQuery 版本
$(document).ready(function() { // 检查当前页面URL是否包含目标参数 if (window.location.href.includes('ccm_order_by_direction=desc')) { // 遍历所有.page-link链接 $('.page-link').each(function() { let href = $(this).attr('href'); // 仅处理已包含目标参数的链接 if (href.includes('ccm_order_by_direction=desc')) { // 避免重复添加参数 if (!href.includes('#filterTop')) { $(this).attr('href', href + '&#filterTop'); } } }); } });
原生 JavaScript 版本
如果不想依赖jQuery,可以用原生JS实现:
document.addEventListener('DOMContentLoaded', function() { if (window.location.href.includes('ccm_order_by_direction=desc')) { const links = document.querySelectorAll('.page-link'); links.forEach(link => { let href = link.href; if (href.includes('ccm_order_by_direction=desc') && !href.includes('#filterTop')) { link.href = href + '&#filterTop'; } }); } });
PHP 实现方案
如果能通过后端代码处理(比如在输出链接前修改),可以用URL解析函数来确保参数添加正确:
// 假设$originalHref是后端生成的链接地址 $originalHref = "/switches-damper-arm-tilt-tip-over-limit?ccm_paging_p=2&ccm_order_by=popular&ccm_order_by_direction=desc"; // 解析URL $urlParts = parse_url(html_entity_decode($originalHref)); parse_str($urlParts['query'] ?? '', $params); // 检查是否包含目标参数 if (isset($params['ccm_order_by_direction']) && $params['ccm_order_by_direction'] === 'desc') { // 拼接锚点参数(注意处理实体编码) if (strpos($originalHref, '#filterTop') === false) { $originalHref .= '&#filterTop'; } } // 输出处理后的链接 echo "<a class='page-link' href='{$originalHref}'>2</a>";
效果验证
处理后页面上的链接会从:
<li class="page-item"> <a class="page-link" href="/switches-damper-arm-tilt-tip-over-limit?ccm_paging_p=2&ccm_order_by=popular&ccm_order_by_direction=desc">2</a> </li>
变为:
<li class="page-item"> <a class="page-link" href="/switches-damper-arm-tilt-tip-over-limit?ccm_paging_p=2&ccm_order_by=popular&ccm_order_by_direction=desc&amp;#filterTop">2</a> </li>
内容的提问来源于stack exchange,提问作者Joseph Snedaker
相关产品推荐
相关产品推荐

