如何在Javascript中每天设置一次变量
Coniser a变量如何在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
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;ismallList
仅在一段时间内使用javascript设置一次,即每天/小时/分钟/一次 那么你想:
- 从列表中选择三个值,并在网页上显示它们
- 每天,选择三个新值以显示全天
- 无论客户端是什么,每个访问页面的人都应该看到相同的值
然后,您可以检索缓存并输出值。缓存的具体实现取决于服务器端语言。将列表存储在本地存储或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