RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1408134
Accepted
user497202
user497202
Asked:2022-07-09 21:19:25 +0000 UTC2022-07-09 21:19:25 +0000 UTC 2022-07-09 21:19:25 +0000 UTC

window.localStorage.getItem() 和 window.sessionStorage.getItem() 返回 null

  • 772

你好,我刚开始学习js。

window.localStorage.getItem()并window.sessionStorage.getItem()返回null,尽管如果您在 chrome 中使用应用程序,则存在值 \u200b\u200bare。

let startBtn = document.getElementById("startBtn")
startBtn.onclick = game;
document.getElementById('clearBR').addEventListener('click', ClearBestResult)
document.getElementById('clearBRforAllTime').addEventListener('click', ClearBestResultForAllTime)
let result
function game() {
   let count = 0
   const nickname = document.getElementById("nickname").value
   document.getElementById('click').addEventListener('click', clickCount)
   let arr = []
   function clickCount() {
      count++
      arr.push(count)
   }
   try {
      if (nickname === "") throw new Error()
   } catch (e) {
      alert('nickname is empty')
   }
   finally {
      setTimeout(function () {
         result = arr.length
         alert(`You clicked ${result} times`)
         if (sessionStorage.getItem, (nickname, result) < result || sessionStorage.getItem, (nickname, result) === undefined) {
            sessionStorage.clear()
            sessionStorage.setItem(nickname, result.toString())
         } else if (result > localStorage.getItem, (nickname, result) || localStorage.getItem === undefined) {
            localStorage.clear()
            localStorage.setItem(nickname, result.toString())
         }
         count = 0
         arr.splice(0, arr.length);
      }, 5000);
   }
   document.getElementById('BRforAllTime').addEventListener('click', bestForAllTimes)
   document.getElementById('BR').addEventListener('click', bestResult)
   function bestForAllTimes() {
      alert(`Best result for the whole time is: ${localStorage.getItem(result)} by ${localStorage.getItem("nickname")}`)
   }
   function bestResult() {
      alert(`Best result is ${window.sessionStorage.getItem(result)}`)
   }
   console.log(sessionStorage.getItem(result)) // null
   console.log(localStorage.getItem(result)) //null
}
function ClearBestResult() {
   window.sessionStorage.clear()
   alert('Best result is cleared')
}
function ClearBestResultForAllTime() {
   localStorage.clear()
   alert('Best result for the whole time is cleared')
}

javascript localstorage
  • 1 1 个回答
  • 67 Views

1 个回答

  • Voted
  1. Best Answer
    De.Minov
    2022-07-10T02:58:20Z2022-07-10T02:58:20Z

    setTimeout将运行作为第一个参数传递的函数,在第二个参数指定的毫秒数之后,在初始化这部分 JS 代码之后,它会进一步“读取”,console.info()它们将从 storage 中通过键返回值undefined。他们不在这里。

    5 秒后,该功能启动。
    在那里,几行之后,我们再次从会话存储中请求值 - 答案应该是undefined,因为代码中的任何地方都没有分配,但是您指出了返回null的内容,比方说..

    接下来,将返回 的测试true,因为其中一个条件通过(第二个 - sessionStorage.getItem(nickname, result) === undefined)。

    好的,我们清除了会话,整个会话.. 比方说。
    此外,我们在变量上创建一个具有新值的键。

    让我们继续进行第二次检查 .. 它会返回false, more 和 ...localStorage.getItem,false这到底是什么?它飞了,因为我没有在代码中看到对本地存储的分配。


    解决方案二:

    1. 考虑并制定代码,好吧,再次重写所有内容。
    2. 将代码中缺失的部分扔到问题中,因为有些东西告诉我你错过了一些东西。如果不是,那么只剩下第一个解决方案。

    补充答案

    在误差方面

    if(sessionStorage.getItem, (nickname, result) < result || sessionStorage.getItem, (nickname, result) === undefined) {
      sessionStorage.clear()
      sessionStorage.setItem(nickname, result.toString())
    } else if (result > localStorage.getItem, (nickname, result) || localStorage.getItem === undefined) {
      localStorage.clear()
      localStorage.setItem(nickname, result.toString())
    }
    

    应该是.getItem(nickname)which 反过来会返回一个字符串,要与result显然具有数字类型的 进行比较,您需要将返回的字符串转换为数字。

    例如像这样 - 。Number(sessionStorage.getItem(nickname)) < result


    在某些地方您要求.getItem('nickname'),但从代码判断您希望通过变量查找键,因此需要删除引号。

    一般来说,我看不到任何错误,除了我在添加答案之前在上面描述的错误。


    有一个缺陷,在我看来。

    .clear()删除存储中所有条目的方法,因此将删除所有玩家的结果。

    也许最好删除“当前”播放器,通过.removeItem(nickname)?

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5