【问题标题】:Pushing data to javascript array but the array is not growing将数据推送到javascript数组但数组没有增长
【发布时间】:2012-03-07 23:44:52
【问题描述】:

我正在尝试为内部网站创建导航系统。

为此,我通过跟踪页面 url 的 javascript 创建了一个数组,并且在每个新页面中,我都将新的 url 推送到数组中。

问题是,每个新页面似乎都覆盖了最后一页。

这是我的 javascript 文件中的内容...请注意,如果该数组尚不存在,我只会创建一个新数组(当该人离开网站时它将被删除)。

var myURL = document.URL;

if (typeof myHistory == "undefined" || !(myHistory instanceof Array)) {
    var myHistory = [];
}

myHistory.push(myURL); 

var last_element = myHistory[myHistory.length - 1];

var number_rows = myHistory.length;

这是我用来查看 html 中的值的...

<script type="text/javascript">
<!--
  document.write(last_element);
  document.write(number_rows);
// -->
</script>

它会根据需要显示 URL (last_element),但是当我在页面之间浏览时 number_rows 保持为 1,而不是上升到 2、3、4 等,这是我希望实现的。

谁能指点一下?

【问题讨论】:

  • 每次刷新页面时,所有的 javascript 变量都会被删除。需要持久化的可以试试html5本地存储:amplifyjs.com/api/store
  • 欢迎来到Stack Overflow,请务必花时间阅读faq

标签: javascript html url push


【解决方案1】:

每次刷新页面时,JavaScript 都会重新刷新。如果您需要数据持久化,则需要使用 cookie、localStorage 或服务器端数据存储。

所有这些选项都要求您对字符串进行序列化和反序列化。

下面是一个快速示例,说明如何使用 localStorage 执行此操作:

//closure to prevent global pollution
//it's good to be green
(function () {
    "use strict";
    var history,
        url;
    //set url here
    //I'm making the assumption that no url will have a ',' char in it
    history = localStorage['history'].split(',');
    history.push(url);
    localStorage['history'] = history.join(',');
    console.log(url, history.length);
}());

【讨论】:

  • 感谢 zzzzBov ...回到绘图板。
【解决方案2】:

当您在页面之间浏览时,会在每个页面上重新创建 javascript 环境。所以你总是从一个空数组开始。

【讨论】:

  • 谢谢肖恩......我认为这是类似的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 2021-09-01
  • 2022-11-10
  • 2011-07-07
  • 2020-02-13
  • 2015-10-22
相关资源
最近更新 更多