【问题标题】:JavaScript local storage value NaNJavaScript 本地存储值 NaN
【发布时间】:2022-01-25 02:36:42
【问题描述】:

我的问题是 JavaScript 错误 NaN。一切都在我的 LocalHost (文件:///)中完美运行,但是一旦我上传它,它就会到处显示“NaN”。我不明白可能是什么原因,这是我的第一个 JavaScript 项目。

我遗漏了很多 HTML 代码,但在 JavaScript 中也有说明。

HTML:

<div class="coinsdisplay">
    <input id="coins" type="text" disabled name="" value="0" class="coinInput">
</div>
<div class="cps">
    <p id="cps">0 Coins/s</p>
</div>

<script src="public/js/main.js"></script>

<script>
  window.onload= loadGame();
</script>

JS:

var coincount = 0;
var autoClick = 0;
var computer = 0;
var multiplier = 1;

// Single Click
function addCoin() {
  coincount = coincount + 1
  update()
}

// Updater
function update() {
  document.getElementById('coins').value = coincount;
  document.getElementById('cps').innerHTML = (((autoClick) + (computer*2))*multiplier) + " Coins/s";
  //AutoClicker
  document.getElementById('amountAutoClick').innerHTML = autoClick;
  document.getElementById('cosAutoClick').innerHTML = ((autoClick+1) * 12) + " Coins";
  //Computer
  document.getElementById('amountComputer').innerHTML = computer;
  document.getElementById('cosComputer').innerHTML = ((computer+1) * 15) + " Coins";
}

function timer() {
  coincount = coincount + autoClick;
  coincount = coincount + computer*2;
  update()
}
setInterval(timer, 1000)

// AutoClicker
function buyAutoClick() {
  if (coincount >= ((autoClick+1) * 12)) {
      coincount = coincount - ((autoClick+1) * 12);
      autoClick = autoClick + 1;
      update()
  }
}

// Computer
function buyComputer() {
  if (coincount >= ((computer+1) * 100)) {
      coincount = coincount - ((computer+1) * 50);
      computer = computer + 1;
      update()
  }
}

// SaveGame
function saveGame() {
  localStorage.setItem("coincount", coincount);
  localStorage.setItem("autoClick", autoClick);
  localStorage.setItem("computer", computer);
}
setInterval(saveGame, 1000)

function loadGame() {
  coincount = localStorage.getItem("coincount");
  coincount = parseInt(coincount);
  autoClick = localStorage.getItem("autoClick");
  autoClick = parseInt(autoClick);
  computer = localStorage.getItem("computer");
  computer = parseInt(computer);
  update()
}

希望有人能帮助我,祝大家有个美好的一天。

【问题讨论】:

  • 你需要window.onload=loadGame;window.addEventListener("load",loadGame) 没有()
  • 是html文件的结尾吗?还是那决定?
  • 没关系,如果你做得正确,它会在页面加载后执行

标签: javascript html localhost local-storage nan


【解决方案1】:

您是否在saveGame 函数之前调用函数loadGame?如果是这样,问题可能是在 localStorage 中还没有保存任何内容。所以localStorage.getItem("something") 只返回nullparseInt() 将其转换为NaN。确保你的 localStorage 被填满,或者你有这样的默认值(注意 || 0):

function loadGame() {
  coincount = localStorage.getItem("coincount") || 0;
  coincount = parseInt(coincount);
  autoClick = localStorage.getItem("autoClick") || 0;
  autoClick = parseInt(autoClick);
  computer = localStorage.getItem("computer") || 0;
  computer = parseInt(computer);
  update()
}

【讨论】:

  • 不幸的是它不起作用
  • @byte 您确定您的 localStorage 中的项目不包含无效条目吗?可能是因为之前的运行,它们已经填充了 NaN
  • 问题是由于 onload=loadGame() 而在任何事情之前执行 loadGame
  • @mplungjan 那怎么办?当您关闭页面并再次打开它时,应该会调用本地存储。
  • 如果我阻止本地存储一切正常(逻辑上它不会保存任何东西)这是因为负载,但我不明白打开页面时应该如何调用存储
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多