通过单击按钮减少数字直到达到 0

Decrement number by clicking button until reaching 0

我正在做一个项目,有点卡住了。我确信我遗漏了什么,但我并没有遗漏什么。

我提取了我正在做的事情的一般概念并将其放到 JS 中 fiddle。

所以基本上,我想在每次单击按钮时(使用 vanilla JS)将显示的数字 (200) 减去指定数字范围内随机生成的数字。让它工作一点。单击按钮时,它会递减。

但是我想继续递减它,直到显示的数字为 0。然而,我 运行 遇到的问题是,每次单击按钮时,显示的数字都会更新,但仍会从 200 中减去,而不是来自更新后的值。

例如,我可以单击一次,数字将从 200 跳到 189。当我再次单击时,数字实际上会跳到 195,这意味着它是从 200 中减去而不是减去新生成的数量来自 189.

Jsfiddle: https://jsfiddle.net/miguerurso/0wmtgd67/5/

html:

<head></head>
<body>
<div id="number" style="font-size: 2em;"></div>
<button>decrement</button>
</body>

JS:

const numberCont = document.getElementById('number');
const button = document.querySelector('button');

let x = 200;

numberCont.innerHTML = x;

button.addEventListener("click", function(){
    function randomNum(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min)
      }
      const randomNumResult = randomNum(7, 12)

     let updatedX = x - randomNumResult;

      numberCont.innerHTML = updatedX;
})

x 中减去它,而不是将它放入一个新变量中。 https://jsfiddle.net/sean7777/fvgchjb3/1/

您还需要将 updateX 分配给 x。目前您只将它提供给元素。试试这个。

const numberCont = document.getElementById('number');
const button = document.querySelector('button');

let x = 200;

numberCont.innerHTML = x;

button.addEventListener("click", function(){
    function randomNum(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min)
      }
      const randomNumResult = randomNum(7, 12)

      x = Math.floor(0, x - randomNumResult);

      numberCont.innerHTML = x;
}

您实际上并没有将 x 的值更改为新的减去值。您必须这样做才能继续从变量中减去。我重写了您的事件侦听器以更改 x 的值而不低于 0.

button.addEventListener("click", function(){
    function randomNum(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min)
    }

    x = Math.max(x - randomNum(7, 12), 0);

    numberCont.innerHTML = x;
})

只改一行代码:

let updatedX = x - randomNumResult;
numberCont.innerHTML = updatedX;

与:

x = x - randomNumResult;
numberCont.innerHTML = x;