You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress+Divi页面:将当前URL参数注入按钮href的问题求助

搞定按钮href的参数传递问题!

看了你的代码,问题很明确:你已经能正确生成带参数的目标URL,但没有把这个URL赋值给按钮的href属性,而且代码还有重复定义、jQuery版本过老的小问题。下面给你修复后的完整方案:

修复后的代码(直接可用)

// 仅定义一次参数获取函数
function getParameterByName(name, url = window.location.href) { 
    name = name.replace(/[\[\]]/g, '\\$&'); 
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), 
        results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, ' ')); 
} 

// 获取需要的参数值
var f_value = getParameterByName('f'); 
var l_value = getParameterByName('l'); 
var e_value = getParameterByName('e'); 
var ph_value = getParameterByName('ph'); 
var id_value = getParameterByName('id'); 

// 等待DOM加载完成后操作按钮(Divi页面必须加这个,确保按钮已渲染)
jQuery(document).ready(function($) { 
    // 构建目标URL
    const myUrlWithParams = new URL("https://website.com/new-url/"); 
    // 只添加存在的参数,避免空值参数
    if(f_value) myUrlWithParams.searchParams.append("f", f_value);
    if(l_value) myUrlWithParams.searchParams.append("l", l_value);
    if(e_value) myUrlWithParams.searchParams.append("e", e_value);
    if(ph_value) myUrlWithParams.searchParams.append("ph", ph_value);
    if(id_value) myUrlWithParams.searchParams.append("id", id_value); 

    // 核心操作:把生成的URL赋值给按钮的href!
    $("#js-caller").attr("href", myUrlWithParams.href);

    // 可选:点击时调试用(不需要可以删掉)
    $( "#js-caller" ).on( "click", function( event ){ 
        console.log("当前按钮链接:", $(this).attr("href")); 
        // 如果你想阻止默认跳转就保留这行,否则删掉
        // event.preventDefault(); 
    }); 
});

为什么你的原代码没生效?

  • 重复代码冗余:你写了两遍相同的函数和变量,虽然不会报错,但完全没必要,还可能导致变量覆盖
  • 没设置href:你只是在点击时生成了URL,但没把它赋值给按钮的href属性,所以按钮还是用原来的链接
  • jQuery版本太老:你引入的1.2.3版本太老旧,Divi自带的jQuery版本比这个新很多,同时引入会有兼容性冲突,直接用Divi自带的就行

更简洁的批量参数复制方案(推荐)

如果以后要加更多参数,一个个写append太麻烦,用这个批量处理的方式:

jQuery(document).ready(function($) {
    const currentUrl = new URL(window.location.href);
    const newUrl = new URL("https://website.com/new-url/");
    
    // 列出你要复制的参数名
    const paramsToCopy = ['f', 'l', 'e', 'ph', 'id'];
    paramsToCopy.forEach(param => {
        const value = currentUrl.searchParams.get(param);
        if(value) newUrl.searchParams.set(param, value);
    });

    $("#js-caller").attr("href", newUrl.href);
});

以后要加参数,只需要在paramsToCopy数组里加个参数名就行,非常方便。

内容的提问来源于stack exchange,提问作者Thommen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:47:13