javascript 我试图更改if语句中文本的值,但没有成功,我想我使用了错误的逻辑

cwdobuhd  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(119)

所以我做了这段代码,当我点击检查按钮时,它每次都会改变消息的文本,这取决于猜测变量中输入的数字。
虽然我的逻辑声明变量在开始,然后使用他们似乎对我来说是好的,它不工作,有人能解释为什么我的逻辑是错误的吗?

// for example i declared 
let message = document.querySelector('.message').textContent;

//and then i used message inside if to change the text
message = '‼ Type a Number';

为什么这是错的呢?

document.querySelector('.check').addEventListener('click', function () {
      let score = 20;
      const guess = Number(document.querySelector('.guess').value);
      let message = document.querySelector('.message').textContent;
      if (!guess) {
        message = '‼ Type a Number';
      } else if (secretNumber === guess) {
        message = 'You Won 🥳';
      } else if (secretNumber < guess) {
        message = 'It is a lower Number!';
        score += -1;
        document.querySelector('.score').textContent = score;
      } else if (secretNumber > guess) {
        message = 'It is a higher Number!';
        score += -1;
        document.querySelector('.score').textContent = score;
      }
    });
bvn4nwqk

bvn4nwqk1#

您的问题(或者说我遇到的两个问题)是每次运行函数时都要重新定义score,也就是说,每次单击按钮时,score都会被重置为20,并且只能根据用户的输入而采用2019的值,另一个问题是您从未重新分配.message元素的textContent
要解决这个问题,只需将score的声明移出函数,并添加一个额外的消息重新分配行,如下所示:

let score = 20;
document.querySelector(".check").addEventListener("click", function() {
    // the 'let score' line has been removed from in here
    const guess = Number(document.querySelector('.guess').value);
    let message = document.querySelector('.message').textContent;
    // Rest of your code ...
    document.querySelector(".message").textContent = message;
});

还要注意(正如Bravo所指出的),+=-的使用是重叠的--你应该只使用带减法的复合赋值运算符(即score -= 1而不是score += -1。这也适用于其他运算符,比如乘法*=和除法/=)。

相关问题