2012-03-07 127 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