2012-03-07 6 views
0

私は内部ウェブサイト用のナビゲーションシステムを作成しようとしています。javascript配列にデータをプッシュしていても、配列が拡張されていません

これを行うには、ページのURLをトラッキングするjavascriptを使用して配列を作成しています。新しいページごとに、その新しいURLを配列にプッシュしています。

問題は、それぞれの新しいページが最後のページを上書きしているようです。

これは私のjavascriptファイルに含まれているものです。注意アレイが存在しない場合にのみ、新しい配列を作成します(人がWebサイトを離れるときに削除されます)。私は、HTML内の値を参照するために使用しているものを

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; 

これを...

<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

+0

[SO]へようこそ。[faq]を読む時間を確保してください。 – zzzzBov

答えて

1

ページを更新するたびに、JavaScriptが新たに更新されます。データの永続性が必要な場合は、Cookie、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

0

あなたがページ間のJavaScript環境を閲覧各ページに再作成されます。

は、ここでは、localStorageを使用して、これを行うことができる方法の簡単な例です。だからあなたは常に空の配列から始まっています。

+0

ありがとうSean ...私はそれがこれらの線に沿って何かであると思った。 – Ronan

関連する問題