Каждую 1 секунду увеличивайте значение случайным числом, используя десятичные числа - PullRequest
0 голосов
/ 16 октября 2018

Итак, я пытаюсь увеличить значение числа с интервалом в 1 секунду с десятичным числом между (0,01 и 0,05), и я не могу понять это.

Единственное, что он делает, это показывает мне числа от 0,01 до 0,05 вместо того, чтобы сложить их в целое число.

setInterval (function myFunction() {
  var number = 0;
  document.getElementById("computerScore").innerHTML = number + 
  Math.floor((Math.random() * 5) + 1)/100;
}, 1000)

<b>computer score:</b><p id="computerScore">0</p>

Ответы [ 5 ]

0 голосов
/ 16 октября 2018

Ваша проблема в том, что вы устанавливаете number на 0 в каждом выполнении, в то время как оно должно быть текущим значением.

Вам необходимо присвоить Number(document.getElementById("computerScore").textContent), чтобы оно продолжало обновляться с добавленным случайным числом.

Примечание , которое я использовал textContent, которое рекомендуется здесь какон содержит только текстовое содержимое элемента, избегая элементов HTML.

setInterval (function myFunction() {
  var number = Number(document.getElementById("computerScore").textContent);
  document.getElementById("computerScore").textContent= number + 
  Math.floor((Math.random() * 5) + 1)/100;
}, 1000)

Демонстрация:

setInterval (function myFunction() {
  var number = Number(document.getElementById("computerScore").textContent);
  document.getElementById("computerScore").textContent = number + 
  Math.floor((Math.random() * 5) + 1)/100;
}, 1000)
<b>computer score:</b><p id="computerScore">0</p>
0 голосов
/ 16 октября 2018

вы можете попробовать что-то вроде этого.Вы забыли установить число на 0. Затем вам нужно увеличить свое число на случайное значение, которое вы получаете.

https://codepen.io/anon/pen/dgJpep

JS :


  var number = 0;

function check(){

  setInterval(function(){
    number = number + Math.floor((Math.random() * 5) + 1)/100;
  }, 3000);
}

check();

setInterval(function(){
  document.getElementById('computerScore').innerHTML = number;
});

Дайте мне знать, работает ли оно дляты!

0 голосов
/ 16 октября 2018

Вы устанавливаете number в 0 каждый раз, когда вызываете функцию, вы должны определить number вне интервала

var number = 0;
setInterval(function myFunction() {
    document.getElementById("computerScore").innerHTML = number +
        Math.floor((Math.random() * 5) + 1) / 100;
}, 1000)
0 голосов
/ 16 октября 2018

Вам нужно объявить номер вне setTimeout:

var number = 0;
setInterval (function myFunction() {
  number = number + 
  Math.floor((Math.random() * 5) + 1)/100;
  document.getElementById("computerScore").innerHTML = number;
}, 1000)

JSFiddle

0 голосов
/ 16 октября 2018

Вам нужно извлечь предыдущее значение из вашего счета и добавить к нему случайное число:

PS: я добавил .toFixed(2), чтобы ограничить ваш результат двумя десятичными знаками.

let score = document.getElementById("computerScore");

setInterval (function myFunction() {
  score.innerHTML = (+score.innerHTML + Math.floor((Math.random() * 5) + 1)/100).toFixed(2);
}, 1000)
<b>computer score:</b><p id="computerScore">0</p>
...