Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中每天设置一次变量_Javascript_Html - Fatal编程技术网

如何在Javascript中每天设置一次变量

如何在Javascript中每天设置一次变量,javascript,html,Javascript,Html,Coniser a变量list=[“a”、“B”、…]作为字符串列表。我想使用一个Javascript程序,每天从这个列表中选择三个字符串,并将其写入HTML字段 目前我使用 function getRandom(arr, n) { var result = new Array(n), len = arr.length, taken = new Array(len); if (n > len) throw new RangeError("getRandom: mor

Coniser a变量
list=[“a”、“B”、…]
作为字符串列表。我想使用一个Javascript程序,每天从这个列表中选择三个字符串,并将其写入HTML字段

目前我使用

function getRandom(arr, n) {
var result = new Array(n),
    len = arr.length,
    taken = new Array(len);
if (n > len)
    throw new RangeError("getRandom: more elements taken than available");
while (n--) {
    var x = Math.floor(Math.random() * len);
    result[n] = arr[x in taken ? taken[x] : x];
    taken[x] = --len in taken ? taken[len] : len;
}
return result;
}

smallList = getRandom(list, 3); 

var htmlTags = [
"tag1",
"tag2",
"tag3"
];
for (var i = 0; i < htmlTags.length; i++) {
    document.getElementById(htmlTags[i]).innerHTML = smallList[i];
}
函数getRandom(arr,n){ var结果=新数组(n), len=arr.长度, take=新阵列(len); 如果(n>len) 抛出新的RangeError(“getRandom:获取的元素多于可用元素”); 而(n--){ var x=Math.floor(Math.random()*len); 结果[n]=arr[x in take?take[x]:x]; 取下[x]=--len in取下?取下[len]:len; } 返回结果; } smallList=getRandom(列表,3); var htmlTags=[ “tag1”, “tag2”, “tag3” ]; 对于(var i=0;i 现在,每当我刷新网站时,这个列表都会有新的条目。是否有一种方法可以使
smallList
仅在一段时间内使用javascript设置一次,即每天/小时/分钟/一次

那么你想:

  • 从列表中选择三个值,并在网页上显示它们
  • 每天,选择三个新值以显示全天
  • 无论客户端是什么,每个访问页面的人都应该看到相同的值
正如其他人所建议的,对于服务器端任务来说,它比客户端任务更适合

例如,您可能有一个服务器页面,检查是否存在存储在缓存中的值。缓存将设置为24小时。如果缓存不可用,则将创建一个新的缓存对象,并给予24小时的半衰期。在缓存中,还可以存储希望检索的值


然后,您可以检索缓存并输出值。缓存的具体实现取决于服务器端语言。

将列表存储在本地存储或Cookie中。还要存储时间戳

使用setTimeout(function(){…},n)检查时间戳并根据需要更新值

如果页面刷新或重新加载,则检查存储的内容。如果不存在任何内容,请创建列表并设置时间戳。如果数据确实存在,则比较时间戳并根据需要更新列表

如果您需要列表在用户之间保持一致,那么需要在服务器端存储、检查和计算所有内容

localStorage.savedData = {
    timestamp: new Date(),
    dataList: ['a','b','c']
}
要从localStorage获取值,请执行以下操作:

// you don't have to create variables, you can just use localStorage.[property] to get compare any value
let ts = localStorage.timestamp; // Date object
let dl = localStorage.dataList; // Array of values

有关本地存储的更多信息,请参见(或搜索网页)->

好:通过存储值(COOKIE、会话、本地存储、内存):

对于每个用户,您必须在浏览器中使用cookie、会话或写入本地存储

对于所有用户,您必须在数据库、文件或内存等位置使用服务器变量

您将该值设置为在一天内过期,如果过期则重新生成。这是你从大多数人那里得到的答案,因为这是他们知道如何解决这个问题的唯一方法,从所有位置进行单集值轮询

更好:通过带有日期种子的确定性伪随机数生成器:

或者,如果你真的雄心勃勃,不想依赖于你在某处设定的价值,你可以使用或编写: 确定性伪随机数生成器,从日期开始播种。由于确定性伪随机生成器从同一种子生成可复制的“随机数”,因此播种日期每天为您提供一个唯一的种子,因此每天提供一个唯一的随机数

功能RC4(种子){
this.s=新阵列(256);
这个。i=0;
这个。j=0;
对于(变量i=0;i<256;i++){
这个.s[i]=i;
}
如果(种子){
这个。混合(种子);
}
};
RC4.getStringBytes=函数(字符串){
var输出=[];
对于(变量i=0;i>8;
}而(c>0);
output=output.concat(bytes.reverse());
}
返回输出;
};
RC4.原型。_swap=功能(i,j){
var tmp=这个.s[i];
this.s[i]=this.s[j];
这个.s[j]=tmp;
};
RC4.prototype.mix=函数(种子){
var输入=RC4.getStringBytes(种子);
var j=0;
对于(var i=0;i