2017-03-09 5 views
0

特定のページだけがJS/jQueryにアクセスしたときにリストを作成しようとしています。私は他のページやその中の変数を訪問するときにこのリストにアクセスする必要があります。どのように保管しますか?他のページで使用するようにJSで変数配列を保持

私は関数外でこれを定義することで大丈夫だろうと考えました...?

var colours = []; 

//make the list 
$(document).ready(function() { 
    if (window.location.href == 'http://something/anotherthing/') { 
     colours.push(orange); 
     colours.push(purple); 
     colours.push(green); 
     colours.push(magenta); 
     } 
    } 
}); 

//want to access the list here! 
$(document).ready(function() { 
    //need to access the colours as defined above 
    var index = 3; 
    var using_colour = colours[index]; 
}); 

私は、私はそれがhttp://something/anotherthing/ "ではないビューのために戻って空白来るの理由であるvar colours = [];を設定しておく実現。私はそれを移動した場合

が未定義

のプロパティを読み取ることができない私は基本的に、どのように私は一度変数リストを作成しないし、後でそれにアクセスを取得しますか...?

おかげ

+0

あなたは、クッキーやウェブストレージを使用してみましたが? – Sepultura

+3

['localStorage'](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)、[' sessionStorage'](https://developer.mozilla.org/en- US/docs/Web/API/Window/sessionStorage) – Andreas

+1

すべてのページには別々のウィンドウオブジェクトがあります。したがって、1つで定義する変数は決して他のウィンドウで利用できません。 –

答えて

2

localStorageの使い方を明確にするために、ページをリロードしたり別のページに移動しても、同じドメイン内にあります。

使用例:あなたはObjectsを格納する必要がある場合も

if(localStorage["colours"] === undefined) { 
    localStorage["colours"] = ["orange", "purple", "green", "magenta"]; 
} 

var colours = localStorage["colours"].split(','); 

、あなたはJSON.stringify/JSON.parseを使用して行うことができます。

localStorage["colours"] = JSON.stringify({ green: 'blue', purple: 'orange' }); 
var colours = JSON.parse(localStorage["colours"]); 
+0

ここではsplit()は何ですか? –

+1

'localStorage'からアクセスすると、' 'string''として返されます。" orange、purple、green、magenta "' ' – Arg0n

+0

は絶対に素晴らしいです - 安心してインストールできました。ありがとうございました。 –

-3

あなたは、メインテンプレートのHTML/PHPファイル内の別のスクリプトタグを作成する必要があります。

<script type="text/javascript"> var colors = []; </script>

し、すべてのscriptのタグの上にこれが含まれます。しかし、コアJSファイル以下。私はこのためにjQueryプラグイン(jQueryのクッキー)を使用してい

+0

私はまだこの変数で未定義のエラーが発生します。@Akshay Prakash –

+0

ページのソースを表示するとき、この変数は、特に変数colorを使用しているすべてのスクリプトタグの上になければなりません。これは、すべてのスクリプトページが読み込まれるたびに、すべてのスクリプトを再初期化します。私はあなたがクッキーを使うことをお勧めします。 –

0

、あなたが他のページロードイベントにこれをアクセスすることができた後

var colours = []; 

//make the list 
$(document).ready(function() { 
     if (window.location.href == 'http://something/anotherthing/') { 
      colours.push(orange); 
      colours.push(purple); 
      colours.push(green); 
      colours.push(magenta); 

      Cookies.set('ColoursArray', colours); 
     } 
}); 

をあなたのクッキーを設定https://github.com/js-cookie/js-cookie

まずから同じを得ることができます

$(function() { 
     if(Cookies.get('ColoursArray') != 'undefined'){ 
    var colours = Cookies.get('ColoursArray'); --> this is your array 
    } 
}); 
+1

ローカルストレージを使用するだけでjquery/pluginsを使わなくても同様の結果が得られます – Albzi

+0

はい、ローカルストレージでも実現できますが、明示的に期限切れにしない限りブラウザを閉じるとクッキーは失効します。 – user7417866

+0

はい申し訳ありませんが、クッキーがこれを行うことができることも知っています。あなたはjqueryやプラグインを使わなくてもローカルでやることができます。 – Albzi

関連する問題