javascript - 尝试在 2 个 HTML 文件之间共享的 JS 文件内使用全局数组,但失败

标签 javascript jquery

所以我有一个 HTML 页面,其中包含一堆供用户填写的表单元素。我将用户所做的所有选择推送到我唯一的 Javascript 文件中的一个全局变量 allTheData[] 中。

然后我有第二个 HTML 页面,该页面在用户单击按钮后加载。该 HTML 页面应该获取 allTheData 数组内的一些数据并显示它。我正在调用该函数来显示 allTheData,方法是:

window.onload = function () {
    if (window.location.href.indexOf('Two') > -1) {
        carousel();
    }
}

function carousel() {
    console.log("oh");
    alert(allTheData.toString());
}

但是,我发现第二个 HTML 页面中没有显示任何内容,并且 allTheData 数组似乎为空,尽管它之前在第一个 HTML 页面中已填写。我非常有信心我正确地将数据推送到 allTheData 数组中,因为当我仍在第一个 HTML 页面中使用alert(allTheData.toString()) 时,所有数据都会显示。

我认为在从第一个 HTML 页面过渡到第二个 HTML 页面期间发生了一些事情,导致 allTheData 数组为空或其他原因,但我不确定它是什么。请帮助新手!

最佳答案

Web 存储:这听起来像是 window.sessionStorage 对象的工作,它与它的表兄弟 window.localStorage 一起允许数据 - as-string 保存在用户浏览器中,以便在同一域的各个页面上使用。

但是,请记住,它们都是类似 Cookie 的功能,因此它们的有效性取决于用户对每个域的 Cookie 偏好。

一个简单的条件将确定网络存储选项是否可用,就像这样......

if (window.sessionStorage) {
   // continue with app ...
} else {
   // inform user about web storage
   // and ask them to accept Cookies
   // before reloading the page (or whatever)
}

保存到网络存储以及从网络存储中检索需要在 String 数据类型之间进行转换,通常通过像这样的 JSON 方法...

// save to...
var array = ['item0', 'item1', 2, 3, 'IV'];
sessionStorage.myApp = JSON.stringify(array);

// retrieve from...
var array = JSON.parse(sessionStorage.myApp);

还有比这些更具体的方法。更多详细信息和兼容性表等参见 Using the Web Storage API @ MDN .

希望有帮助。 :)

关于javascript - 尝试在 2 个 HTML 文件之间共享的 JS 文件内使用全局数组,但失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123063/

相关文章:

javascript - jquery 可折叠菜单帮助 - 差不多了,但也需要 2 层深度可折叠!

javascript - 自定义 Google 跟踪代码管理器 JavaScript 中出现错误

javascript - 获取多个具有相同 id 的 anchor 中已被点击的 anchor

javascript - 使用 jQuery 选择/提交仅更改的表单字段

javascript - event.keycode 与 event.which

javascript - 试图弄清楚为什么代码不会呈现列表

javascript - 我如何获取动态创建的相同类的当前 div id

javascript - 检测 webapp 是否横向并添加 padding-top

javascript - 如何用 PHP 打印 JavaScript

javascript - 检查隐藏表单输入在表单提交上是否具有值