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

如何让append函数在window.location.href跳转后生效并成功传值?

问题原因

你遇到的核心问题是:执行window.location.href = '/review'后,浏览器会立刻加载新页面,当前页面的后续代码(比如append操作)根本来不及执行,而且新页面和原页面是完全独立的执行环境,原页面的变量和DOM修改无法传递到新页面。

解决方案

下面是两种可行的解决思路,选一种适合你的即可:

方法一:通过URL参数传递值(最常用)

1. 修改原页面的review函数

把要传递的值拼到跳转URL的参数里,不用再做DOM操作:

function review(val) {
    // 把val作为URL参数传递到新页面
    window.location.href = `/review?num=${val}`;
}

2. 在新页面(/review)的JS中处理

页面加载时读取URL参数,然后生成按钮并绑定函数:

// 新页面加载时执行
window.addEventListener('DOMContentLoaded', function() {
    // 获取URL中的num参数
    const urlParams = new URLSearchParams(window.location.search);
    const val = urlParams.get('num');

    // 生成按钮并添加到页面
    let temp_html = `<button onclick="showReviewTable(${val})" type="button" class="btn btn-primary">review</button>`;
    $('#make-review').append(temp_html);
});

function showReviewTable(val) {
    console.log(val);
}

方法二:用localStorage临时存储值(适合复杂数据)

如果要传递的数据比较复杂,URL参数不够用,可以用localStorage暂存:

1. 修改原页面的review函数

function review(val) {
    // 把值存到localStorage
    localStorage.setItem('reviewNum', val);
    // 跳转页面
    window.location.href = '/review';
}

2. 在新页面(/review)的JS中处理

window.addEventListener('DOMContentLoaded', function() {
    // 从localStorage读取值
    const val = localStorage.getItem('reviewNum');
    // 用完及时删除,避免残留
    localStorage.removeItem('reviewNum');

    if (val) {
        let temp_html = `<button onclick="showReviewTable(${val})" type="button" class="btn btn-primary">review</button>`;
        $('#make-review').append(temp_html);
    }
});

function showReviewTable(val) {
    console.log(val);
}
补充说明
  • 你之前用window.stop或e.preventDefault()会阻止页面跳转,当然能看到日志,但违背了跳转的需求,所以不能这么用。
  • URL参数适合简单的字符串/数字,复杂数据建议用localStorage或者sessionStorage(sessionStorage关闭页面就失效,更安全)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:55:25