javascript - 从存储加载在控制台中有效,但在页面加载时无效
问题描述
编辑:问题已解决。显然,页面加载的速度不够快,以至于引用的 id 就位。如下添加事件侦听器解决了该问题:
window.addEventListener('load', function() {stuff that's supposed to happen})
在我创建一个小游戏的毫无头绪的旅程中,我目前正在努力保存到用户的本地存储并从用户的本地存储中加载。虽然保存似乎正在工作,但加载却没有,除非我手动将相应的命令放入控制台。
这是起作用的代码片段:
//definition of variables
var dayLength = 10;
//if function to check if there's stored data, loading it and changing the document accordingly
if ( localStorage.saveExists === "true" ) {
dayLength = Number(localStorage.dayLength);
document.getElementById("displayDayLength").innerHTML = dayLength.toFixed(3);
}
var loadingAttempted = "true";
//function to save which occurs every 15 seconds (or through a button click)
function saveAuto() {
if ( loadingAttempted === "true" ) {
var saveExists = "false";
localStorage.saveExists = "true";
localStorage.dayLength = dayLength;
}
当本地存储中没有数据时(换句话说,如果 saveExists = "false"),站点将不会尝试加载某些内容并按预期工作。当本地存储中有数据时,文件会尝试加载它(到目前为止它可以工作)。
但是,我会在应该根据加载的数据更改文档的行中收到错误,声称 dayLength 为“null”。
如果我随后手动将 localStorage.dayLength 输入到控制台中,它会返回“10”,因为它应该。我知道将数据存储到本地存储中是可行的,因为否则用于加载的 if 函数将不知道 (saveExists === "true"),因此不会做任何事情。但无论出于何种原因,它都无法正确加载任何其他数据并返回“null”,除非我手动将完全相同的代码放入控制台。
最好的部分是,我从另一个做完全相同的事情的小游戏中得到了整个想法,并且它完美地工作。
我完全不知道为什么它在另一个项目中有效,但不适用于我的。
教育我,如果你愿意的话。并提前感谢您。
PS:我也尝试使用 localStorage.setItem 和 localStorage.getItem,但问题仍然存在。
解决方案
推荐阅读
- azure - 从 azure 表中获取前 n 行
- sql - SQL 检查违规欺诈选民
- node.js - Node.js 在不使用时休眠,最初需要很长时间才能响应
- uikit - 如何在 iOS 14 的 UISplitViewController 中显示或隐藏主节点
- excel - 从一张表中获取非零值和相邻数据并在另一张表中创建新表 - VBA循环
- c - 为什么记忆不需要指针?
- java - 如何使用 wait() 和 notifyAll() 暂停函数,直到值增加到超过一定数量
- excel - COUNT 如果该行的单列中的日期在指定范围内,则“LOI-”出现在多列范围内的次数
- r - 将配对数据读入 R
- c# - Discord.net 向特定用户发送 DM?