javascript - 用 let 声明的变量不改变
问题描述
我正在制作一个游戏,用户可以给自己和 CPU 一个用户名。当播放器点击“播放”时,用户名应该被存储并显示在下一页上。然而,什么也没有出现。任何帮助将不胜感激 :)
注意:我认为这可能与变量的范围有关,因为我使用了“let”。
let play = document.getElementById("play").addEventListener("click", () => {
let playerName = document.getElementById("player-name-input").value;
let cpuName = document.getElementById("cpu-name-input").value;
// Stores player and CPU names
if (playerName === "") {
playerName = "You";
}
if (cpuName === "") {
cpuName = "CPU";
}
// Moves from homepage to game page
document.getElementById("homepage").style.display = "none";
document.getElementById("game").style.display = "block";
// Calls game loop
gameLoop();
});
let playerScore = 0;
let cpuScore = 0;
function gameLoop() {
document.getElementById("player-name-score").textContent = `${playerName}: ${playerScore}`;
document.getElementById("cpu-name-score").textContent = `${cpuName}: ${cpuScore}`;
}
#game {
display: none;
}
<div id="homepage">
<input id="player-name-input" class="names" type="text" placeholder='Enter Your Name'>
<input id="cpu-name-input" class="names" type="text" placeholder='Enter CPU Name'>
<button id="play">Play</button>
</div>
<div id="game">
<h3 id="player-name-score"></h3>
<h3 id="cpu-name-score"></h3>
</div>
解决方案
当然是范围问题。
// Calls game loop
gameLoop(playerName, cpuName);
function gameLoop(player, cpu) {
document.getElementById("score").textContent += `${wins * 2 - 1}`;
console.log(player, cpu)
}
推荐阅读
- scala - Intellij Idea 代码覆盖率与 Maven Jacoco
- c# - 在 Azure 函数绑定中访问 EventGridEvent.EventType
- python - python解决方法中的分数计算器
- gitlab - 在 Gitlab 中删除管道时出现 403 错误
- kubernetes - 将 traefik 中的参数设置为入口控制器(反向代理)
- c - 如何结合程序的注册和计费
- sql-server - 为什么我在添加可选默认值时收到错误消息:“不允许对 'SYSTEM' 或 'INTEGRATION' 用户进行修改。”?
- c# - 如何更改 groupBox.Text?
- python - 如果语句不响应带有 neopixel 的 int 输入
- python - 是否可以使用日期参数 pd.read_csv 数据?