确切的代码/问题在哪里?
我能做的就是猜测。
每次生成颜色时,您都需要使用相同的生成过程,最终得到相同的颜色,并以您满意的方式将其应用于所需的元素。
这是一个简单的方法,在 HTML 中使用
<some parent element onload="loadColors()">
现在每次将该元素加载到 DOM 中(它会在第一次访问和刷新时)它都会执行你的函数。
在 JS 中:
var loadcolors = function(){
// your process to generate color here
var yourGeneratedColor = ???
// bind that color to your elements, for example:
document.getElementById('Id-of-your-element').backgroundColor = your GeneratedColor;
}
如果您使用随机播种或生成过程非常耗费资源,您可能会选择使用 cookie 或本地存储在生成颜色后保留颜色。这样,您第一次生成它,并且仅当您存储它的资源被破坏时才生成它。
编辑 - 对评论的回答:
如果您只想输入一种(或几种)颜色,您可以简单地完成。
var yourColor = color + ""; // to make sure its string
localStorage.setItem('oneColor', yourColor); // store color under oneColor name in local storage
var retrievedColor = localStorage.getItem('oneColor'); // retrieve it's value
如果您需要存储许多颜色,您希望将它们全部存储到对象中,然后在保存之前对它们进行字符串化。
var myColors = {
// object with my colors or array of colors, even arrays of colors..
}
// Put the object into storage
localStorage.setItem('storedColors', JSON.stringify(myColors));
// Retrieve the object from storage
var retrievedColors = localStorage.getItem('storedColors');
您仍然可以使用我在上面向您展示的 onload,并在该函数中检查颜色对象或颜色是否存在于本地存储中。如果不生成并存储它们,如果它在那里,只需加载它并应用于元素。
要检查某个东西是否存在,只需尝试检索它,如果它为 null,则它不存在。
if (localStorage.getItem("item") === null) // not there