在JS中保留变量数组以在其他页面上使用

时间:2017-03-09 11:18:30

标签: javascript jquery

我正在尝试创建一个列表,只有一个特定的页面访问JS / jQuery。然后,当我访问其他页面及其中的变量时,我需要访问此列表。我该如何存放?

我认为通过在函数之外定义它可以正常...?

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];
});

我意识到我一直在设置var colours = [];,这就是为什么对于不是“http://something/anotherthing/”的视图,它会变回空白的原因。如果我移动它我会得到

  

无法读取未定义的属性

基本上,如何创建变量列表一次然后再访问它??

由于

3 个答案:

答案 0 :(得分:2)

为了澄清如何使用localStorage,即使在重新加载页面或导航到另一个页面之后,只要它在同一个域中,它就可以在网站上使用。

使用示例:

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

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

另外,如果您需要存储Objects,可以使用JSON.stringify / JSON.parse来存储:

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

答案 1 :(得分:0)

我正在使用jQuery插件(jQuery cookies),您可以从one-line if statement

获得相同的内容

首先设置你的cookies

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);
        }
});

您可以将其访问到其他页面加载事件

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

答案 2 :(得分:-3)

您应该在主模板HTML / PHP文件中创建一个单独的脚本标记:

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

并将其包含在您的所有script标记之上。但是在核心JS文件之下。