javascript - Javascript高分更新,无论新分数是否更高
问题描述
新手来了!抱歉,如果我没有正确格式化。我有一个打地鼠游戏,想在本地存储中记录分数。底部名为“highscore”的功能不起作用 - 它会更新“highscore”,无论它实际上是否高于之前的分数!我敢肯定我错过了一些非常明显的东西,就像我说的那样,对此非常陌生!仅在此阶段使用 Vanilla Javascript,因此保留提示或解决方案将是理想的。非常感谢任何正确方向的帮助或指示!谢谢!
window.onload = function() {
setUp();
count = 0;
myDiv = document.getElementById("mole");
myDiv.addEventListener("click", function() {});
};
function setUp() {
let img = document.createElement("img");
img.src = "mole.png";
img.onclick = function(event) {
whackedMole();
};
img.className = "mole";
img.id = "mole";
document.getElementById("moleMap")
.rows[randomNumber()].cells[randomNumber()].appendChild(img);
}
function randomNumber() {
return Math.floor(Math.random() * 5);
}
function whackedMole() {
let mole = document.getElementById("mole");
let audio = new Audio('whack-audio.wav');
audio.play();
document.getElementById("counter").innerHTML = (++count);
mole.parentNode.removeChild(mole);
setUp();
}
let myTimer = 0;
function clock() {
myTimer = setInterval(myClock, 1000);
var c = 10;
function myClock() {
document.getElementById("countdown").innerHTML = --c;
if (c <= 0) {
clearInterval(myTimer);
alert("Your score is " + count + "!");
highscore();
document.getElementById("counter").innerHTML = 0;
count = 0;
}
}
}
//This is the function in question;
function highscore() {
document.getElementById("highscore").innerHTML = count;
let highscore = count;
if (count <= highscore) {
return;
} else if (count > highscore) {
localStorage.setItem('highscore', count);
}
}
解决方案
如果我理解正确,问题出在这段代码中:
function highscore() {
document.getElementById("highscore").innerHTML = count;
let highscore = count;
if (count <= highscore) {
return;
} else if (count > highscore) {
localStorage.setItem('highscore', count);
}
}
特别是在这两行:
document.getElementById("highscore").innerHTML = count;
和
let highscore = count;
每次调用 highscore(); 无论计数是否大于高分,您都在更新 DOM。然后在我暗示 highscore 的第二行代码获取 count 的值,因此 if 子句中的第一条语句将始终评估为 true。我要做的是修改代码如下:
function highscore() {
// Just in case the highscore is not yet initialized.
if (!localstorage.getItem('highscore')) {
localstorage.setItem('highscore', count);
}
let highscore = localstorage.getItem('highscore');
if (count <= highscore) {
return;
} else if (count > highscore) {
document.getElementById("highscore").innerHTML = count;
localStorage.setItem('highscore', count);
}
}
推荐阅读
- android - Android Gradle 错误:w:类路径中的运行时 JAR 文件应具有相同的版本。这些文件在类路径中找到:
- express - Joi 验证 string().trim() 不工作
- excel - 将excel范围复制到与相邻图片相同的幻灯片上
- node.js - react 和 paypal-rest-sdk:如何将数据从支付页面传回应用程序
- ipad - iPad Pro 2020 上的世界跟踪 AR 会话 (ARWorldTrackingConfiguration) 是否真的不支持正面跟踪?已编辑答案
- recursion - 如何设计一种回溯算法来生成所有“m”阶的拉丁方格?
- ruby - 给定两个哈希数组,我们如何匹配两个数组中具有匹配键的哈希:值
- c - 尝试访问时带有结构的 C mq_receive() 会导致段错误
- javascript - PHP return to Javascript
- r - 如何添加更多的 x 轴标签使人口金字塔与 ggplot?R