首先,我不得不说我对Javascript和程序设计非常陌生,因此该问题很可能与我(当前)的知识不足有关。
我尝试制作一个简单的游戏,其中计算机认为一个介于0到10之间的随机数,并且用户尝试通过在文本字段中键入自己的猜测来猜测该数字。如果该数字正确,则用户将收到消息,他们猜测正确的数字;否则,将收到消息,表明数字不正确。
第一部分按预期工作。问题是分数计数器。
这是我为计数器编写的HTML代码的一部分:
<p id="points">Number of points: </p><span id="points-number">0</span>
这是我在JS中编写的代码:
<script type="text/javascript">
document.getElementById("instructions").onclick = function() {
alert("You need to guess the number that your computer imagined. Viable numbers are between 0 and 10. Every time you guess the number, score increases by 1 and every time you miss, you will lose a point")
}
document.getElementById("guess-number").onclick = function() {
var ourNumber;
var randomNumber;
var pointsNumber = 0;
randomNumber = Math.floor(Math.random() * 10);
ourNumber = document.getElementById("input").value;
if (ourNumber == randomNumber) {
alert("The numbers are equal!");
pointsNumber+=1;
var result = document.getElementById("points-number");
result.innerHTML = pointsNumber;
} else {
alert("The numbers are not equal! The number that your computer imagined is:" + randomNumber + ", and our number is: " + ourNumber);
pointsNumber-=1;
var result = document.getElementById("points-number");
result.innerHTML = pointsNumber;
}
}
</script>
现在是问题所在……每当用户错过数字时,点数将变为-1。但是,如果他第二次错过比赛,则停留在-1,不会进一步减少。用户猜出数字后,该值从-1变为1。但是,如果他再次猜到,该值不会增加到2,而是保持为1。然后,他错过时,它跳回到-1,反之亦然
所以,我认为我在这里缺少什么,我应该怎么做才能使计数器按预期工作?换句话说,要使用户每次猜测随机数时分数都增加1,而每次用户弄错随机数时分数都降低1?
谢谢。
答案 0 :(得分:1)
您需要在函数外部声明pointsNumber
:
var pointsNumber = 0;
document.getElementById("guess-number").onclick = function() {
var ourNumber;
var randomNumber;
否则,每次调用onclick函数时,都要声明pointsNumber
并将其设置为0。然后根据if
/ else
的不同,它会变为+1或-1。解释您正在观察的行为。
答案 1 :(得分:1)
基本上,您总是从
开始var pointsNumber = 0;
相反,您应该使用:
var pointsNumber = + document.getElementById("points-number").innerHTML;
奖金: 是的,而不是:
randomNumber = Math.floor(Math.random() * 10);
使用:
randomNumber = Math.floor(Math.random() * 11);
因为Math.random()位于0(含)和1(排他)之间,所以永远不会达到10。
查看更多有关Math.random()的信息:https://www.w3schools.com/js/js_random.asp