javascript - 如何使用 if 语句和 .innerText 比较分数?
问题描述
我正在尝试制作一个 Ping Pong scoreKeeper。除了比较分数和宣布获胜者的部分外,一切都已完成。我正在尝试使用if语句来比较两个变量的 innerText 以及它们的分数是否匹配。但它不起作用。
这是我编写的 Javascript 和 HTML 代码。
const p1Score = document.querySelector("#p1Score")
const p2Score = document.querySelector("#p2Score")
const increaseP1Score = document.querySelector("#increaseP1Score")
const increaseP2Score = document.querySelector("#increaseP2Score")
const resetScore = document.querySelector("#resetScore")
const scoreKeeper = document.querySelector("#scoreKeeper")
increaseP1Score.addEventListener('click', function(event) {
p1Score.innerText++
// if (p1Score.innerText == 5 && p1Score.innerText > p2Score.innerText) {
// console.log("Here it works!")
})
increaseP2Score.addEventListener('click', function() {
p2Score.innerText++
})
resetScore.addEventListener('click', function() {
p1Score.innerText = 0;
p2Score.innerText = 0;
})
if (p1Score.innerText == 5 && p1Score.innerText > p2Score.innerText) {
console.log("Working!")
}
<div id="container">
<header id="header">
<h1 id="scoreKeeper">Current Score: <span id="p1Score">0</span> to <span id="p2Score">1</span></h1>
</header>
<footer id="footer">
<button id="increaseP1Score">+1 Player One</button>
<button id="increaseP2Score">+1 Player Two</button>
<button id="resetScore">Reset</button>
</footer>
</div>
你会在我的 JS 代码中看到一条注释。当我尝试比较那里的值时,它以某种方式起作用。但我不知道为什么它在事件侦听器之外不起作用。
解决方案
const p1Score = document.querySelector("#p1Score")
const p2Score = document.querySelector("#p2Score")
const increaseP1Score = document.querySelector("#increaseP1Score")
const increaseP2Score = document.querySelector("#increaseP2Score")
const resetScore = document.querySelector("#resetScore")
const scoreKeeper = document.querySelector("#scoreKeeper")
increaseP1Score.addEventListener('click', function(event) {
p1Score.innerText++
checkScore();
// if (p1Score.innerText == 5 && p1Score.innerText > p2Score.innerText) {
// console.log("Here it works!")
})
increaseP2Score.addEventListener('click', function() {
p2Score.innerText++
checkScore();
})
resetScore.addEventListener('click', function() {
p1Score.innerText = 0;
p2Score.innerText = 0;
})
function checkScore(){
if (p1Score.innerText == 5 && p1Score.innerText > p2Score.innerText) {
//console.log("Working!")
alert("working!");
}
}
<div id="container">
<header id="header">
<h1 id="scoreKeeper">Current Score: <span id="p1Score">0</span> to <span id="p2Score">1</span></h1>
</header>
<footer id="footer">
<button id="increaseP1Score">+1 Player One</button>
<button id="increaseP2Score">+1 Player Two</button>
<button id="resetScore">Reset</button>
</footer>
</div>
当页面加载时,您的 if 语句只运行一次。您可以将功能...放在checkScore()
上面的函数中,并在增加分数时调用它。这更可重用,并且是在每个增量器中对其进行硬编码的更好解决方案。
推荐阅读
- python - sorted() 如何对列表中的列表起作用
- c++ - 关于搜索和排序算法的问题
- python - 模板未显示在服务器上
- dart - Flutter 确实在几秒钟长的后台工作(Android 中的 Flutter AsyncTask)
- javascript - 字符串到 JSON 解析,javascript 运行时无效字符
- google-apps-script - 未使用 Google Apps 脚本在 Google 日历中添加事件描述
- gnuradio - 从源代码安装 GNU Radio 的问题
- angular - 嵌套值对象为空
- c# - 如何在微服务架构中创建流程或实现类似的设计
- javascript - React 功能组件在重新渲染时重新初始化本地函数和变量(React Hooks)