2012-03-07 123 views
0

我正在尝试为内部网站创建导航系统。将数据推送到javascript数组,但数组不增长

为此,我通过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等,这是我希望达到的。

任何人都可以给我任何指针?

+1

每次刷新页面时,所有javascript变量都将被删除。如果您需要持久性,您可以尝试html5本地存储:http://amplifyjs.com/api/store/ – Caleb 2012-03-07 23:48:11

+0

欢迎来到[SO],请确保您花时间阅读[faq]。 – zzzzBov 2012-03-07 23:48:12

回答

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); 
}()); 
+0

谢谢zzzzBov ...回到绘图板。 – Ronan 2012-03-07 23:55:16

0

当你的网页浏览之间的JavaScript环境中重新创建。所以你总是从一个空的数组开始。

+0

谢谢肖恩......我想这是沿着这些路线的东西。 – Ronan 2012-03-07 23:55:26